我在表单中有两个JComboBox
,我向他们添加了ItemListener
,我应该覆盖itemStateChanged()
,现在我想说是否选择了第一个JComboBox
项目如果选择的第二个JComboBox
项目做了另一件事,但是我不知道怎么办?也许代码可以帮助你。
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED)
picture.setIcon(pics[box.getSelectedIndex()]);
}
在第二行代码中,我不知道如何识别哪个JComboBox
状态已发生变化。
答案 0 :(得分:3)
示例:
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
}
答案 1 :(得分:2)
有两种方法可以做到这一点,第一种方法是检查事件对象上的源并查看它匹配的组合框。
另一种方法是在每个组合框中添加一个不同的监听器,然后你知道进入一个监听器的任何调用都来自相应的控件。这对匿名内部类很有用。