如何访问不可编辑的JComboBox中的项目,以便在选择时运行方法?

时间:2011-05-28 07:53:51

标签: swing jython

我知道一点Python,但遗憾的是没有Java。我正在尝试使用最小的Jython示例,每次选择JComboBox中的项时都会执行一个方法。 Instinct告诉我应该为每个项设置一个actionPerformed =对象,其中object是我想要运行的方法的名称。我在网上找到了一个JMenuItems的例子,我得到了这个工作:

menubar = swing.JMenuBar()
optionMenu = swing.JMenu('Option')
optionsList = ['First', 'Second', 'Third']
for option in optionsList:
    choice = swing.JMenuItem(option)
    choice.actionPerformed = self.doUponSelection
    optionMenu.add(choice)
menuBar.add(optionMenu)

当我尝试使用swing.JComboBoxItem类似的东西时,它告诉我没有这样的属性存在。使用dir()我发现了JCheckBoxMenuItem,JMenuItem和JRadioButtonMenuItem的javax.swing属性。有谁知道我如何访问JList或JComboBox的组件?

注意:我可以访问Jython 2.5.0

编辑:我已经看到了Java文档(不是我理解代码),它描述了显式添加一个actionListener但不认为应该在Jython中完成。我知道Jython JButtons有一个actionPerformed属性,它似乎实现了一个actionListener并执行动作(结合Java步骤)。如果它是JComboBox本身将触发事件,我更加困惑,因为我尝试使用myJComboBox.actionPerformed = self.doUponSelection并且它给了我一个TypeError,说它是一个只读属性。 myJButton.actionPerformed = self.doUponSelection对我来说很好。

1 个答案:

答案 0 :(得分:0)

您必须向ActionListener本身添加JComboBox。进行选择时,将触发操作事件。在聆听者的代码中,只需询问JComboBox所选项目,以了解哪个项目是新选择的项目。

阅读http://download.oracle.com/javase/tutorial/uiswing/components/combobox.html#listeners