JavaFX 集合

2018-03-04 14:37 更新

JavaFX教程 - JavaFX集合


JavaFX中的集合由javafx.collections包定義,javafx.collections包由以下接口和類組成:

接口

接口描述
ObservableList允許我們跟蹤更改的列表
ListChangeListener接收更改通知的接口
ObservableMap允許我們跟蹤更改的映射
MapChangeListener從ObservableMap接收更改通知的接口

描述
FXCollections實(shí)用程序類映射到j(luò)ava.util.Collections
ListChangeListener.Change表示對(duì)ObservableList所做的更改
MapChangeListener.Change表示對(duì)ObservableMap所做的更改

例子

以下代碼顯示如何使用ObservableList,ObservableMap和FXCollections。

import java.util.ArrayList;
import java.util.List;

import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;

public class Main {

  public static void main(String[] args) {
    List<String> list = new ArrayList<String>();

    ObservableList<String> observableList = FXCollections.observableList(list);
    observableList.addListener(new ListChangeListener() {
      @Override
      public void onChanged(ListChangeListener.Change change) {
        System.out.println("change!");
      }
    });
    observableList.add("item one");
    list.add("item two");
    System.out.println("Size: " + observableList.size());

  }
}

上面的代碼生成以下結(jié)果。


例2

以下代碼顯示了如何監(jiān)聽ObservableMap上的更改。

import java.util.HashMap;
import java.util.Map;

import javafx.collections.FXCollections;
import javafx.collections.MapChangeListener;
import javafx.collections.ObservableMap;

public class Main {

  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() {
      @Override
      public void onChanged(MapChangeListener.Change change) {
        System.out.println("change! ");
      }
    });
    observableMap.put("key 1", "value 1");
    map.put("key 2", "value 2");

  }
}

上面的代碼生成以下結(jié)果。

例3

以下代碼顯示了如何找出已更改的內(nèi)容。

import java.util.ArrayList;
import java.util.List;

import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;

public class Main {

  public static void main(String[] args) {
    List<String> list = new ArrayList<String>();

    ObservableList<String> observableList = FXCollections.observableList(list);
    observableList.addListener(new ListChangeListener() {
      
      @Override
      public void onChanged(ListChangeListener.Change change) {
          System.out.println("Detected a change! ");
          while (change.next()) {
              System.out.println("Was added? " + change.wasAdded());
              System.out.println("Was removed? " + change.wasRemoved());
              System.out.println("Was replaced? " + change.wasReplaced());
              System.out.println("Was permutated? " + change.wasPermutated());
              }
          }
      });
    observableList.add("item one");
    list.add("item two");
    System.out.println("Size: " + observableList.size());

  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)