Java 如何检测哪个组合框状态已更改?
我在表单中有两个Java 如何检测哪个组合框状态已更改?,java,swing,jcombobox,itemlistener,Java,Swing,Jcombobox,Itemlistener,我在表单中有两个JComboBox,我在其中添加了一个ItemListener,我应该覆盖itemStateChanged(),现在我想说,如果第一个JComboBox选中的项目做了什么,如果第二个JComboBox选中的项目做了其他事情,我不知道怎么做?也许代码可以帮助你 public void itemStateChanged(ItemEvent e) { if(e.getStateChange()==ItemEvent.SELECTED) picture.setIcon(pics[b
JComboBox
,我在其中添加了一个ItemListener
,我应该覆盖itemStateChanged()
,现在我想说,如果第一个JComboBox
选中的项目做了什么,如果第二个JComboBox
选中的项目做了其他事情,我不知道怎么做?也许代码可以帮助你
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED)
picture.setIcon(pics[box.getSelectedIndex()]);
}
在第二行代码中,我不知道如何识别哪个
JComboBox
状态已更改。有两种方法可以做到这一点,第一种方法是检查事件对象上的源并查看它与哪个组合框匹配
另一种方法是在每个组合框中添加不同的侦听器,这样您就知道进入一个侦听器的任何调用都来自相应的控件。这是匿名内部类的一个很好的用途。有两种方法可以做到这一点,第一种是检查事件对象上的源,并查看它与哪个组合框匹配 另一种方法是在每个组合框中添加不同的侦听器,这样您就知道进入一个侦听器的任何调用都来自相应的控件。这是匿名内部类的一个很好的用法。您可以使用 例如:
public void itemStateChanged(ItemEvent e) {
if(e.getSource() instanceof JComboBox){
JComboBox combo = (JComboBox) e.getSource();
//rest of code
}
现在,对于与combo2
不同的combo1
,您有两个选项,您可以像这样设置组件的名称
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
}
你可以用
例如:
public void itemStateChanged(ItemEvent e) {
if(e.getSource() instanceof JComboBox){
JComboBox combo = (JComboBox) e.getSource();
//rest of code
}
现在,对于与combo2
不同的combo1
,您有两个选项,您可以像这样设置组件的名称
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
}
e.getSource()
可能会帮助您:De.getSource()
可能会帮助您:D值得注意的是,即使是标准的ActionEvent
也有一个.getSource()
方法。此外,事件的最佳实践是在方法签名中将它们设置为final
。值得注意的是,即使是标准的ActionEvent
也有一个.getSource()
方法。此外,事件的最佳实践是在方法签名中使它们成为final
。