首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PropertyChangeListener添加到多个JComboBoxes

将PropertyChangeListener添加到多个JComboBoxes
EN

Stack Overflow用户
提问于 2012-01-03 06:26:44
回答 4查看 687关注 0票数 0

我有一个带有JComboBoxes的表,我想为每个单独的JComboBox添加一个PropertyChangeListener,因为ComboBoxes的一些选择必须更改其他JComboBoxes的可选择项。

我不能手动添加所有这些监听器,因为它们太多了。

我使用数组初始化ComboBoxes,因此在创建JComboBox时已经尝试添加侦听器,如下所示:

代码语言:javascript
复制
comboBox[i].addPropertyChangeListener(new PropertyChangeListener()

但是它不起作用,因为字段变量i不是最终变量,而我需要这个变量。

如何将此变量存储在comboBox中,或者是否有其他方法可以解决此问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-03 06:40:45

如果您可以创建所有这些组合框,那么您还可以手动添加“所有这些侦听器”。有几个选项:

  • 您可以在每次创建新组合框时创建一个新的侦听器,并将索引i传递给该侦听器(通过匿名类、内部类或完全成熟的类),或者像Francis Upton在他的answer
  • 中建议的那样制作一个最终副本。如果您只需要该i来检索产生事件的组合框,您也可以调用event#getSource (它在ActionEventPropertyChangeEvent上都可用,因为您的问题不清楚侦听器的类型)。在这种情况下,您可以只创建一次监听器,也可以为每个combobox

创建一个监听器

票数 3
EN

Stack Overflow用户

发布于 2012-01-03 06:35:15

你可以在构造函数中扩展JComboBox和初始化你想要的东西

票数 0
EN

Stack Overflow用户

发布于 2012-01-03 06:35:24

在您的循环中,可以将i复制到另一个最终变量,并在ActionListener中引用该最后一个变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8705963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档