JComboBoxselect更改监听器?

我试图从JComboBoxselect一个事件来触发。

我遇到的问题是,没有明显的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。 这解决了我的问题,我希望它解决了你和其他人。 谢谢。

我如何获得上一个或最后一个项目?