Java ItemStateChanged被两次调用到JComboBox中
您好,我正在使用一个组合框,当我触发IteamStateChage事件时,该操作调用了两次。但是,如果我打两次电话,我就无法实现我想做的事情 那么,有没有办法只改变一次呢。当我将iteam更改为Jcombobox时。我只需要一次itemStatechange的操作。并且仅使用项目状态更改。![此处为相同的屏幕截图。][1] 请帮我做同样的事。Java ItemStateChanged被两次调用到JComboBox中,java,swing,jframe,jcombobox,Java,Swing,Jframe,Jcombobox,您好,我正在使用一个组合框,当我触发IteamStateChage事件时,该操作调用了两次。但是,如果我打两次电话,我就无法实现我想做的事情 那么,有没有办法只改变一次呢。当我将iteam更改为Jcombobox时。我只需要一次itemStatechange的操作。并且仅使用项目状态更改。![此处为相同的屏幕截图。][1] 请帮我做同样的事。 提前感谢您的支持。在这种情况下,这是预期的行为。组合框发出取消选择当前项和选择新项的信号 在itemStateChanged方法中,您需要检查ItemEv
提前感谢您的支持。在这种情况下,这是预期的行为。组合框发出取消选择当前项和选择新项的信号 在
itemStateChanged
方法中,您需要检查ItemEvent
的状态,以确定应该执行的操作
public void itemStateChanged(ItemEvent evt) {
switch (evt.getStateChanged()) {
case ItemEvent.DESELECTED:
// Do what ever you want when the item is deselected
break;
case ItemEvent.SELECTED:
// Do what ever you want when the item is selected
break;
}
}
在这种情况下,这是预期的行为。组合框发出取消选择当前项和选择新项的信号 在
itemStateChanged
方法中,您需要检查ItemEvent
的状态,以确定应该执行的操作
public void itemStateChanged(ItemEvent evt) {
switch (evt.getStateChanged()) {
case ItemEvent.DESELECTED:
// Do what ever you want when the item is deselected
break;
case ItemEvent.SELECTED:
// Do what ever you want when the item is selected
break;
}
}
以下是如何确定更改事件是选择还是取消选择的示例:
JComboBox<String> comboBox = new JComboBox<>(new String[] {"one", "two", "foo"});
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println("Change");
if(e.getStateChange() == ItemEvent.SELECTED){
System.out.println("Selected");
}
if(e.getStateChange() == ItemEvent.DESELECTED){
System.out.println("Deselected");
}
}
});
JComboBox组合框=新的JComboBox(新字符串[]{“一”、“二”、“foo”});
comboBox.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent e){
系统输出打印项次(“更改”);
如果(如getStateChange()==ItemEvent.SELECTED){
系统输出打印项次(“选定”);
}
如果(例如getStateChange()==ItemEvent.DESELECTED){
系统输出打印项次(“取消选择”);
}
}
});
以下是一个如何确定更改事件是选择还是取消选择的示例:
JComboBox<String> comboBox = new JComboBox<>(new String[] {"one", "two", "foo"});
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println("Change");
if(e.getStateChange() == ItemEvent.SELECTED){
System.out.println("Selected");
}
if(e.getStateChange() == ItemEvent.DESELECTED){
System.out.println("Deselected");
}
}
});
JComboBox组合框=新的JComboBox(新字符串[]{“一”、“二”、“foo”});
comboBox.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent e){
系统输出打印项次(“更改”);
如果(如getStateChange()==ItemEvent.SELECTED){
系统输出打印项次(“选定”);
}
如果(例如getStateChange()==ItemEvent.DESELECTED){
系统输出打印项次(“取消选择”);
}
}
});
您能在您认为发生这种情况的地方显示您的一些代码吗?更好的是,你是否无意中在组合框中注册了两个侦听器?查看屏幕截图,它会出现两次。如输出所示。所以它叫了两次。你看不到输出吗?ItemStateChanged事件可以被触发两次,因为它处理当前值的取消选择和新值的选择。这是默认行为。你需要检查状态事件以确定它是什么类型的事件…@peeskillet看到屏幕截图了吗?iteam statechage的代码就在那里。你能把你认为发生这种情况的代码显示出来吗?更好的是,你是否无意中在组合框中注册了两个侦听器?查看屏幕截图,它会出现两次。如输出所示。所以它叫了两次。你看不到输出吗?ItemStateChanged事件可以被触发两次,因为它处理当前值的取消选择和新值的选择。这是默认行为。您需要检查状态事件以确定它是什么类型的事件…@peeskillet查看屏幕截图,它就在iteam状态更改的代码后面。+1用于MAD编程:我是个很棒的家伙。顺便说一句,你从哪里来?@Krishna如果宇宙有一个明亮的中心…;)。我住在澳大利亚维多利亚州墨尔本的阳光明媚的小镇上……有人对自己评价很高:)@madhh:D哈哈,对了。但我得说你是个疯狂的程序员。顺便说一句,你们现在会问你们所有人关于这一点的疑问。@Krishna在一个特定的API中编写了15年的代码就可以做到这一点了——不过还有很多东西需要学习(就是我);)+1用于编程:我是个很棒的家伙。顺便说一句,你从哪里来?@Krishna如果宇宙有一个明亮的中心…;)。我住在澳大利亚维多利亚州墨尔本的阳光明媚的小镇上……有人对自己评价很高:)@madhh:D哈哈,对了。但我得说你是个疯狂的程序员。顺便说一句,你们现在会问你们所有人关于这一点的疑问。@Krishna在一个特定的API中编写了15年的代码就可以做到这一点了——不过还有很多东西需要学习(就是我);)好吧,让我查一下……)好吧,让我查一下……)