2015-05-11 14 views
1

我有一个JComboBox,并且在每次更改之后我都想打印出所选项目。这是我的JComboBox代码:JComboBox上带有ItemStateChanged监听器的复制输出

mycombobox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); 

我的情况是这样的:

private void mycomboboxItemStateChanged(java.awt.event.ItemEvent evt) {            

    System.out.println(mycombobox.getSelectedItem()); 

} 

一切正常,但我得到一个复制的输出在我的控制台是这样的:

enter image description here

输出应该看起来像:

Item 2 
Item 3 
Item 4 
Item 1 
Item 2 
Item 3 

无复制!问题与其他人不同,因为我想打印出结果并使用另一个事件!我必须做什么,只有当选定的项目出现在我的控制台中时?

+1

看看这个http://stackoverflow.com/questions/21926397/jcombobox-itemstatechanged-event-called-twice-at-a-time –

+0

谢谢你,你必须从你的事件得到stateChange,然后你可以写一个if-statment,就像你在我的答案中看到的一样。 –

回答

0

解决的办法是从你的事件中获取stateChange。

if (evt.getStateChange() == ItemEvent.SELECTED) { 

    System.out.println(mycombobox.getSelectedItem()); 

} 

输出现在是唯一的。