将侦听器添加到数组列表

2022-09-02 05:18:45

我有一个ArrayList,我动态地向它添加了一些对象,我有一个JButton。运行我的程序时,ArrayList 为空,JButton 设置为 setEnabled(false)。我想在ArrayList中有2个元素或更多元素时启用我的按钮,如果ArrayList有一个项目或空,请再次禁用它。我怎样才能做到这一点?


答案 1

Javafx(JRE 8的一部分)提供了一个可观察的列表实现。此代码适用于我:

ObservableList<MyAnno> lstAnno1 = FXCollections.observableList(new ArrayList<MyAnno>());

lstAnno1.addListener((ListChangeListener.Change<? extends MyAnno> c) -> {
   c.next();
   updateAnnotation((List<MyAnno>) c.getAddedSubList(), xyPlot);
});

...
lstAnno1.add(new MyAnno(lTs, dValue, strType));
...

public void updateAnnotation(List<MyAnno> lstMyAnno, XYPlot xyPlot) {
   lstMyAnno.forEach(d -> {
   ...
   });
}

答案 2

ArrayList没有任何通知机制。

我建议你编写自己的实现,它将委托给私有的存储,但增加了侦听通知的能力......或者在Java本身中找到类似的东西。DefaultListModel可能适用于您,尽管它本身并不实现。ListArrayListList


推荐