我如何获得 ObservableList 的对象,我可以在其中编写自己的方法?

How do i get an Object of ObservableList in which i can write my own methods?

我遇到了以下问题:

我有两个 Class 名为 ActiveDateList 和 MainFrame。 ActiveDateList(写成单例)正在扩展 Arraylist 并保存当前活动的 "MyDate"。

ActiveDateList:

public class ActiveDateList extends ArrayList<MyDate>{

    private static ActiveDateList instance; 

    private ActiveDateList(){}

    public static ActiveDateList getInstance(){
        if(instance == null){
            instance = new ActiveDateList();
        }
        return instance;
    }

...

    public void addSorted(MyDate md){
    ...
    }
}

MainFrame Class 是一个需要使用 "ActiveDateList" 的 ObservableList 的 JavaFX 应用程序。

执行此操作的代码:

    ActiveDateList activeDatelist = ActiveDateList.getInstance();
    ObservableList<MyDate> observableADList = FXCollections.observableList(list);

但是这样做之后,我无法访问我在 ActiveDateList 中的每个自写方法,因为像 "addSorted" 之类的东西无法通过 ObservableList 访问,每次我只调用 activeDateList.addSorted( ..) observableADList 显然不会通知监听器。

我觉得我需要一个 Class 来实现 ObservableList,而不必覆盖所有方法,它只使用 ArrayList class 中的方法,让我有可能编写自己的方法在里面。

我感谢每一个想法。

您应该能够扩展 javafx.collections.ModifiableObservableListBase class 而不是 ArrayList。然后,您可以使用 beginChangeendChange 方法来通知侦听器。参见:https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ObservableListBase.html#beginChange--