将侦听器添加到数组列表
我有一个ArrayList,我动态地向它添加了一些对象,我有一个JButton。运行我的程序时,ArrayList 为空,JButton 设置为 setEnabled(false)。我想在ArrayList中有2个元素或更多元素时启用我的按钮,如果ArrayList有一个项目或空,请再次禁用它。我怎样才能做到这一点?
我有一个ArrayList,我动态地向它添加了一些对象,我有一个JButton。运行我的程序时,ArrayList 为空,JButton 设置为 setEnabled(false)。我想在ArrayList中有2个元素或更多元素时启用我的按钮,如果ArrayList有一个项目或空,请再次禁用它。我怎样才能做到这一点?
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 -> {
...
});
}
ArrayList
没有任何通知机制。
我建议你编写自己的实现,它将委托给私有的存储,但增加了侦听通知的能力......或者在Java本身中找到类似的东西。DefaultListModel
可能适用于您,尽管它本身并不实现。List
ArrayList
List