我遇到以下问题:
我有两个名为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类中的方法,让我可以在其中编写自己的方法。
我很感激每一个想法。
答案 0 :(得分:0)
您应该能够扩展javafx.collections.ModifiableObservableListBase
类而不是ArrayList
。然后,您可以使用beginChange
和endChange
方法通知侦听器。请参阅:https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ObservableListBase.html#beginChange--