我有两个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/