JComboBoxselect更改监听器?
我试图从JComboBox
select一个事件来触发。
我遇到的问题是,没有明显的addSelectionListener()
方法。
我试图使用actionPerformed()
但它永远不会触发。
重写JComboBox
的模型,我没有想法。
如何获得JComboBox
上的select更改通知?
编辑:我必须道歉,原来我使用JComboBox
的行为不当的子类,但我会离开这个问题,因为你的答案是好的。 开始投票。 🙂
它应该响应ActionListeners ,如下所示:
combo.addActionListener (new ActionListener () { public void actionPerformed(ActionEvent e) { doSomething(); } });
@John Calsbeek正确地指出addItemListener()
也可以工作。 但是,您可能会得到2个ItemEvents
,一个用于取消select之前select的项目,另一个用于select新项目。 只是不要使用这两种事件types!
ItemListener
实现的代码示例
class ItemChangeListener implements ItemListener{ @Override public void itemStateChanged(ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) { Object item = event.getItem(); // do something with object } } }
现在我们只会得到选定的项目。
然后,只需将侦听器添加到您的JComboBox
addItemListener(new ItemChangeListener());
如果jodonnell的解决scheme失败,我会尝试ItemListener
接口的itemStateChanged()
方法。
这里是创build一个combobox添加一个监听器的项目select更改:
JComboBox comboBox = new JComboBox(); comboBox.setBounds(84, 45, 150, 20); contentPane.add(comboBox); JComboBox comboBox_1 = new JComboBox(); comboBox_1.setBounds(84, 97, 150, 20); contentPane.add(comboBox_1); comboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent arg0) { //Do Something } }); }
你可以试试这些
int selectedIndex = myComboBox.getSelectedIndex();
-要么-
Object selectedObject = myComboBox.getSelectedItem();
-要么-
String selectedValue = myComboBox.getSelectedValue().toString();
我最近正在寻找这个相同的解决scheme,并设法find一个简单的一个没有分配的最后选定的项目和新的选定项目的具体variables。 而这个问题虽然很有帮助,但并没有提供我所需要的解决scheme。 这解决了我的问题,我希望它解决了你和其他人。 谢谢。
我如何获得上一个或最后一个项目?