JavaFX 中的集合由 javafx.collections 包定义,它由以下接口和类组成:
接口:
-
ObservableList:一个列表,使侦听器能够在更改发生时对其进行跟踪
-
ListChangeListener:接收 ObservableList 更改通知的接口
-
ObservableMap:使观察者能够在变化发生时跟踪变化的地图
-
MapChangeListener:接收 ObservableMap 更改通知的接口
班级:
-
FXCollections:一个由静态方法组成的实用程序类,这些静态方法是 java.util.Collections 方法的一对一副本
-
ListChangeListener.Change:表示对 ObservableList 所做的更改
-
MapChangeListener.Change:表示对 ObservableMap 所做的更改
ObservableList 的例子
这里首先创建了一个标准列表。然后用 ObservableList 包裹它。然后注册一个 ListChangeListener,每当 ObservableList 发生变化时都会收到通知:
packageorg.attune.collection;
导入java.util.List;
importjava.util.ArrayList;
importjavafx.collections.ObservableList;
importjavafx.collections.ListChangeListener;
importjavafx.collections.FXCollections;
公共类 ObservableListDemo {
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
ObservableList<String>observableList = FXCollections.observableList(列表);
observableList.addListener(new ListChangeListener() {
@覆盖
public void onChanged(ListChangeListener.Change change) {
System.out.println("检测到变化!");
while (change.next()) {
System.out.println("添加了吗?" + change.wasAdded());
System.out.println("被删除了吗?" + change.wasRemoved());
}
}
});
observableList.add("a : item one");
System.out.println("大小:" + observableList.size()+observableList.toString());
list.add("d: item two");
System.out.println("大小:" + observableList.size()+observableList.toString());
observableList.add("f : 项目三");
System.out.println("大小:" + observableList.size()+observableList.toString());
list.add("b:第四项");
System.out.println("大小:" + observableList.size()+observableList.toString());
observableList.remove(1);
System.out.println("大小:" + observableList.size()+observableList.toString());
observableList.sort(null);
System.out.println("大小:" + observableList.size()+observableList.toString());
observableList.set(2, "c : 项目五");
System.out.println("大小:" + observableList.size()+observableList.toString());
}
}
这是上面程序的输出:
检测到变化!
加入?真的
去掉了?错误的
尺寸:1[a : item one]
尺寸:2[a:第一项,d:第二项]
检测到变化!
加入?真的
去掉了?错误的
尺寸:3[a:第一项,d:第二项,f:第三项]
尺寸:4[a:第一项,d:第二项,f:第三项,b:第四项]
检测到变化!
加入?错误的
去掉了?真的
尺寸:3[a:第一项,f:第三项,b:第四项]
检测到变化!
加入?错误的
去掉了?错误的
尺寸:3[a:第一项,b:第四项,f:第三项]
检测到变化!
加入?真的
去掉了?真的
尺寸:3[a:第一项,b:第四项,c:第五项]
ObservableMap 的例子
包 org.attune.collection;
导入 java.util.Map;
导入 java.util.HashMap;
导入 javafx.collections.ObservableMap;
导入 javafx.collections.MapChangeListener;
导入 javafx.collections.FXCollections;
公共类 ObservableMapDemo {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String,String>();
ObservableMap<String,String> observableMap = FXCollections.observableMap(map);
observableMap.addListener(new MapChangeListener() {
@覆盖
public void onChanged(MapChangeListener.Change change) {
System.out.println("检测到变化!");
}
});
// 将报告对 observableMap 的更改。
observableMap.put("key 1","value 1");
System.out.println("大小: "+observableMap.size() + observableMap.toString());
// 不会报告基础地图的更改。
map.put("键 2","值 2");
System.out.println("大小:"+observableMap.size()+ observableMap.toString());
// 将报告对 observableMap 的更改。
observableMap.remove("key 1");
System.out.println("大小: "+observableMap.size() + observableMap.toString());
}
}
这是输出:
检测到变化!
大小:1{key 1=value 1}
大小:2{键2=值2,键1=值1}
检测到变化!
大小:1{key 2=value 2}
请继续关注更多教育内容 Attune World Wide