itemStateChanged 执行了两次
itemStateChanged触发了两次
原来的代码:
@Override
public void itemStateChanged(ItemEvent e) {
Object source = e.getSource();
if ( source instanceof JRadioButton) {
JRadioButton selectedRadio = (JRadioButton) source;
if(selectedRadio==groupIdRadio){
isXml=false;
}else{
isXml=true;
}
System.out.println("isXml:"+isXml);
}
}
解决方法:增加条件判断:e.getStateChange()==ItemEvent.SELECTED
修改之后的方法:
@Override
public void itemStateChanged(ItemEvent e) {
Object source = e.getSource();
if (e.getStateChange() == ItemEvent.SELECTED&& source instanceof JRadioButton) {
JRadioButton selectedRadio = (JRadioButton) source;
if(selectedRadio==groupIdRadio){
isXml=false;
}else{
isXml=true;
}
System.out.println("isXml:"+isXml);
}
}

参考:
http://suckjava.blogspot.com/2009/06/itemlistener.html
http://stackoverflow.com/questions/21926397/jcombobox-itemstatechanged-event-called-twice-at-a-time
本文探讨了在Java Swing中itemStateChanged事件被触发两次的问题,并提供了一种解决方案:通过检查事件的状态更改是否为选中状态来过滤重复的事件触发。
1346

被折叠的 条评论
为什么被折叠?



