我有两个JComboBox形式,并且在其中添加了ItemListener,我应该覆盖itemStateChanged(),现在我想说是否选择的第一个JComboBox项起作用,否则是否选择了第二个JComboBox项做另一件事,但我不知道怎么办?也许代码可以帮助您。

public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED)
   picture.setIcon(pics[box.getSelectedIndex()]);
}


在第二行代码中,我不知道如何识别哪个JComboBox状态已更改。

最佳答案

您可以使用ItemEvent#getSource()

例:

public void itemStateChanged(ItemEvent e) {

if(e.getSource() instanceof JComboBox){
  JComboBox combo = (JComboBox) e.getSource();
  //rest of code
}


现在,对于与combo1不同的combo2,您有2个选项,可以像这样为这些组件设置名称。

combo1.setName("combo1");
combo2.setName("combo2");


并在itemListener中

if(e.getSource() instanceof JComboBox){
  JComboBox combo = (JComboBox) e.getSource();

   if("combo1".equals(combo.getName())){
        // your code
   }
    .
    .// rest of code
}


或者,如果您知道它们是同一实例,则可以始终使用==

   if(combo1 == e.getSource() ){
        // your code
   }else if (combo2 == e.getSource()){
        //code for combo 2
   }

关于java - 如何检测哪个组合框状态已更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20790109/

10-09 03:17