JavaFX集合

JavaFX中的集合由javafx.collections包定义,javafx.collections包由以下接口和类组成:
接口

接口 描述
ObservableList 允许跟踪更改的列表
ListChangeListener 接收更改通知的接口
ObservableMap 允许跟踪更改的映射
MapChangeListener 从ObservableMap接收更改通知的接口

描述
FXCollections 实用程序类映射到java.util.Collections
ListChangeListener.Change 表示对ObservableList所做的更改
MapChangeListener.Change 表示对ObservableMap所做的更改

示例

以下代码显示了如何使用ObservableList,ObservableMap和FXCollections。

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import javafx.collections.FXCollections;
  4. import javafx.collections.ListChangeListener;
  5. import javafx.collections.ObservableList;
  6. public class Main {
  7. public static void main(String[] args) {
  8. List<String> list = new ArrayList<String>();
  9. ObservableList<String> observableList = FXCollections.observableList(list);
  10. observableList.addListener(new ListChangeListener() {
  11. @Override
  12. public void onChanged(ListChangeListener.Change change) {
  13. System.out.println("有修改操作!");
  14. }
  15. });
  16. observableList.add("item one");
  17. list.add("item two");
  18. System.out.println("Size: " + observableList.size());
  19. }
  20. }

实例-2

以下代码显示了如何监听ObservableMap上的更改。

  1. import java.util.HashMap;
  2. import java.util.Map;
  3. import javafx.collections.FXCollections;
  4. import javafx.collections.MapChangeListener;
  5. import javafx.collections.ObservableMap;
  6. public class Main {
  7. public static void main(String[] args) {
  8. Map<String, String> map = new HashMap<String, String>();
  9. ObservableMap<String, String> observableMap = FXCollections
  10. .observableMap(map);
  11. observableMap.addListener(new MapChangeListener() {
  12. @Override
  13. public void onChanged(MapChangeListener.Change change) {
  14. System.out.println("change! ");
  15. }
  16. });
  17. observableMap.put("key 1", "value 1");
  18. map.put("key 2", "value 2");
  19. }
  20. }

实例-3

以下代码显示了如何找出已更改的内容。

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import javafx.collections.FXCollections;
  4. import javafx.collections.ListChangeListener;
  5. import javafx.collections.ObservableList;
  6. public class Main {
  7. public static void main(String[] args) {
  8. List<String> list = new ArrayList<String>();
  9. ObservableList<String> observableList = FXCollections.observableList(list);
  10. observableList.addListener(new ListChangeListener() {
  11. @Override
  12. public void onChanged(ListChangeListener.Change change) {
  13. System.out.println("Detected a change! ");
  14. while (change.next()) {
  15. System.out.println("Was added? " + change.wasAdded());
  16. System.out.println("Was removed? " + change.wasRemoved());
  17. System.out.println("Was replaced? " + change.wasReplaced());
  18. System.out.println("Was permutated? " + change.wasPermutated());
  19. }
  20. }
  21. });
  22. observableList.add("item one");
  23. list.add("item two");
  24. System.out.println("Size: " + observableList.size());
  25. }
  26. }