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

时间:2017-06-16 14:22:26

标签: java arraylist observablelist

我遇到以下问题:

我有两个名为ActiveDateList和MainFrame的类。 ActiveDateList(写成singleton)正在扩展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类是一个JavaFX应用程序,需要使用&#34; ActiveDateList&#34;的ObservableList。

代码:

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

然而,在这样做之后,我无法访问我在ActiveDateList中使用的每个自编写方法,因为像&#34; addSorted&#34;无法通过ObservableList访问,每次我只调用activeDateList.addSorted(..)observableADList显然不会通知监听器。

我觉得我需要一个实现ObservableList的类,而不是必须覆盖所有方法,它只使用ArrayList类中的方法,让我可以在其中编写自己的方法。

我很感激每一个想法。

1 个答案:

答案 0 :(得分:0)

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