从该事件的字面意思来理解,就是item的状态发生改变时触发该事件,item在这里的状态有两个,Selected 和 deSelected(即选中和未被选中),所以,当改变下拉列表中被选中的项的时候,其实是触发了两次事件,第一次是上次被选中的项的 State 由 Selected 变为 deSelected ,即取消选择, 第二次是本次被选中的项的 State 由 deSelected 变为 Selected ,即新选中,所以,必然的 ItemStateChanged 事件中的代码要被执行两次了。
  解决方法 就是:
  if(e.getStateChange() == ItemEvent.SELECTED){
  //要执行的代码
  }

  即为当事件是选中某一项的时候,才执行该代码。

例如:


public void itemStateChanged(ItemEvent e){  

if(e.getStateChange() == ItemEvent.SELECTED){
if((e.getSource()==jrb1)){
JOptionPane.showMessageDialog(null,"111!",
"提示",JOptionPane.INFORMATION_MESSAGE);
}
if((e.getSource()==jrb2)){
JOptionPane.showMessageDialog(null,"2222!",
"提示",JOptionPane.INFORMATION_MESSAGE);
}
if((e.getSource()==jrb3)){
JOptionPane.showMessageDialog(null,"33333!",
"提示",JOptionPane.INFORMATION_MESSAGE);
}
}


}