我如何获得 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
。然后,您可以使用 beginChange
和 endChange
方法来通知侦听器。参见:https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ObservableListBase.html#beginChange--
我遇到了以下问题:
我有两个 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
。然后,您可以使用 beginChange
和 endChange
方法来通知侦听器。参见:https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ObservableListBase.html#beginChange--