我有一个带有 JComboBoxes
的表,并且想要向每个 JComboBox
添加一个 PropertyChangeListener
,因为某些 ComboBox 的选择必须更改其他 JComboBoxes
的可选项。
我无法手动添加所有这些监听器,因为它们的数量非常多。
我正在使用数组初始化 ComboBox,因此我在创建 JComboBox
时已经尝试添加监听器,如下所示:
comboBox[i].addPropertyChangeListener(new PropertyChangeListener()
但它不起作用,因为字段变量 i
不是最终的,我需要这个变量。
如何将此变量存储在组合框中,或者是否有其他可能性来解决此问题?
最佳答案
如果您可以创建所有这些组合框,那么您还可以手动添加“所有这些监听器”。有几种选择:
- 每次创建新的组合框时都会创建一个新的监听器,并将该索引
i
传递给该监听器(通过匿名类、内部类或完全成熟的类)或通过创建最终的按照弗朗西斯·厄普顿在回答中建议的方式复制 - 如果您只需要
i
来检索事件源自的组合框,您还可以调用event#getSource
(这在ActionEvent
以及PropertyChangeEvent
上,因为您的问题不清楚监听器的类型)。在这种情况下,您可以仅创建监听器一次,也可以为每个组合框创建一个监听器
关于java - 将 PropertyChangeListener 添加到多个 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705963/