我有一个带有JComboBoxes的表,我想为每个单独的JComboBox添加一个PropertyChangeListener,因为ComboBoxes的一些选择必须更改其他JComboBoxes的可选择项。
我不能手动添加所有这些监听器,因为它们太多了。
我使用数组初始化ComboBoxes,因此在创建JComboBox时已经尝试添加侦听器,如下所示:
comboBox[i].addPropertyChangeListener(new PropertyChangeListener()但是它不起作用,因为字段变量i不是最终变量,而我需要这个变量。
如何将此变量存储在comboBox中,或者是否有其他方法可以解决此问题?
发布于 2012-01-03 06:40:45
如果您可以创建所有这些组合框,那么您还可以手动添加“所有这些侦听器”。有几个选项:
i传递给该侦听器(通过匿名类、内部类或完全成熟的类),或者像Francis Upton在他的answeri来检索产生事件的组合框,您也可以调用event#getSource (它在ActionEvent和PropertyChangeEvent上都可用,因为您的问题不清楚侦听器的类型)。在这种情况下,您可以只创建一次监听器,也可以为每个combobox创建一个监听器
发布于 2012-01-03 06:35:15
你可以在构造函数中扩展JComboBox和初始化你想要的东西
发布于 2012-01-03 06:35:24
在您的循环中,可以将i复制到另一个最终变量,并在ActionListener中引用该最后一个变量。
https://stackoverflow.com/questions/8705963
复制相似问题