JavaFX教程-更新觸發器
更新觸發器
JavaFX類沒有構造器,其屬性也沒有“setter”。作為替代物,JavaFX提供了類似SQL的觸發器(trigger)來為使用者提供處理資料修改事件的能力。
觸發器使用trigger關鍵字宣告。
觸發器由頭部和程式碼體構成。頭部說明了觸發器應用的事件型別。程式碼體則是在特定事件發生時執行的過程。在程式碼體中你可以使用任何在操作體中有效的語句。與成員函式/操作類似,在觸發器中在程式碼體內的上下文物件可以通過this關鍵字訪問。
建立觸發器
你可以在一個新建物件的上下文中宣告一個建立觸發器:
import java.lang.System;
class X {
attribute nums: Number*;
}
trigger on new X {
insert [3,4] into this.nums;
}
var x = new X();
System.out.println(x.nums == [3,4]); // prints true
上面的示例中定義了一個在X類的例項被建立時執行的觸發器。此觸發器完成了對nums屬性的初始賦值。
插入觸發器
當一個成員被插入到多值屬性時,我們可以定義一個插入觸發器:
import java.lang.System;
class X {
attribute nums: Number*;
}
trigger on insert num into X.nums {
System.out.println("just inserted {num} into X.nums at position {indexof num}");
}
var x = new X();
insert 12 into x.nums; // prints just inserted 12 into X.nums at position 0
insert 13 into x.nums; // prints just inserted 13 into X.nums at position 1
以上示例程式碼中,“num”是引用被插入成員的變數(你可以按照自己喜好命名它)。此變數的上下文索引(由indexof操作符返回)與插入點一致。
刪除觸發器
當一個成員從多值屬性中被刪除時,我們可以定義一個刪除觸發器:
import java.lang.System;
class X {
attribute nums: Number*;
}
trigger on delete num from X.nums {
System.out.println("just deleted {num} from X.nums at position {indexof num}");
}
var x = X {
nums: [12, 13]
};
delete x.nums[1]; // prints just deleted 13 from X.nums at position 1
delete x.nums[0]; // prints just deleted 12 from X.nums at position 0
以上示例程式碼中,“num”是引用被刪除成員的變數(你可以按照自己喜好命名它)。此變數的上下文索引(由indexof操作符返回)與刪除點一致。
替換觸發器
當一個單值的屬性值或者多值屬性的成員被替換時,我們可以定義一個替換觸發器:
import java.lang.System;
class X {
attribute nums: Number*;
attribute num: Number?;
}
trigger on X.nums[oldValue] = newValue {
System.out.println("just replaced {oldValue} with {newValue} at position {indexof newValue} in X.nums");
}
trigger on X.num[oldValue] = newValue {
System.out.println("X.num: just replaced {oldValue} with {newValue}");
}
var x = X {
nums: [12, 13]
num: 100
};
x.nums[1] = 5; // prints just replaced 13 with 5 at position 1 in X.nums
x.num = 3; // prints X.num: just replaced 100 with 3
x.num = null; // prints X.num: just replaced 3 with null
以上示例程式碼中,“oldValue”和“newValue”是兩個變數,它們分別表示對被替換成員的舊值和替換後的新值的引用(你可以按照自己喜好命名)。變數的上下文索引(由indexof操作符返回)與被替換成員的順序位置一致。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-209697/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle觸發器~ 更新多表的問題Oracle觸發器
- JavaFX教程-反射Java反射
- JavaFX教程-操作Java
- 觸發器實現表資料自動更新觸發器
- JavaFX教程-表示式Java
- PLSQL方式更新LOB不會被觸發器捕獲SQL觸發器
- Oracle觸發器觸發級別Oracle觸發器
- JavaFX教程-類與物件Java物件
- JavaFX教程-修改陣列Java陣列
- JavaFX教程——基本型別Java型別
- SAP 資料更新的觸發
- Oracle觸發器6(建立系統事件觸發器)Oracle觸發器事件
- 根據業務寫觸發器(oracle觸發器片)觸發器Oracle
- MySQL觸發器MySql觸發器
- mysql——觸發器MySql觸發器
- mysql 觸發器MySql觸發器
- SQL觸發器SQL觸發器
- Mysql觸發器:MySql觸發器
- Oracle觸發器Oracle觸發器
- 【SQL Server】-- 一觸即發之觸發器SQLServer觸發器
- 利用觸發器解決更新主鍵衝突的問題觸發器
- JavaFX教程-範圍表示式Java
- JavaFX教程-查詢陣列Java陣列
- 與JavaFX第一次親密接觸Java
- bettertouchtool mac教程:如何新增一個新的觸發器Mac觸發器
- mysql繞過行觸發器,實現語句觸發器MySql觸發器
- sqlserver 列觸發器SQLServer觸發器
- 除錯觸發器除錯觸發器
- 建立MySQL觸發器MySql觸發器
- SqlServer-觸發器SQLServer觸發器
- MySQL使用觸發器MySql觸發器
- MySql-觸發器MySql觸發器
- MySQL 建立觸發器MySql觸發器
- mysql建立觸發器MySql觸發器
- SQL Server 觸發器SQLServer觸發器
- postgresql 觸發器操作SQL觸發器
- 觸發器詳解觸發器
- 建立SQL觸發器SQL觸發器