问题描述
|
我知道一些Python,但不幸的是没有Java。我试图获得一个最小的Jython示例,该示例在每次选择JComboBox中的项目时都会执行一个方法。本能告诉我,我应该为每个项目设置一个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类似的东西时,它告诉我不存在这样的属性。使用ѭ1,我发现了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并说这是一个只读属性。 with3ѭ,对我来说效果很好。
解决方法
您必须在
JComboBox
本身上添加ActionListener
。做出选择后,将触发一个动作事件。在收听者的代码中,只需向ѭ5询问所选项目,即可知道哪个项目是新选择的项目。
阅读http://download.oracle.com/javase/tutorial/uiswing/components/combobox.html#listeners