gpt4 book ai didi

java - 为什么更改时 JComboBox 上的 itemStateChanged 会被调用两次?

转载 作者:IT老高 更新时间:2023-10-28 20:51:16 25 4
gpt4 key购买 nike

我正在使用带有 ItemListener 的 JComboBox。当值改变时,itemStateChanged 事件被调用两次。第一次调用,ItemEvent 显示选择的原始项目。第二次显示用户刚刚选择的项目。下面是一些测试代码:

public Tester(){

JComboBox box = new JComboBox();
box.addItem("One");
box.addItem("Two");
box.addItem("Three");
box.addItem("Four");

box.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
System.out.println(e.getItem());
}
});

JFrame frame = new JFrame();
frame.getContentPane().add(box);
frame.pack();
frame.setVisible(true);
}

因此,当我将组合框从“一”更改为“三”一次时,控制台显示:

One
Three

有没有办法我可以使用 ItemEvent 来判断它是第二个项目(即用户选择的项目)?如果有人能解释为什么它会被调用两次,那就太好了!

谢谢

最佳答案

看看这个来源:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Tester {

public Tester(){

JComboBox box = new JComboBox();
box.addItem("One");
box.addItem("Two");
box.addItem("Three");
box.addItem("Four");

box.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
System.out.println(e.getItem() + " " + e.getStateChange() );
}
});

JFrame frame = new JFrame();
frame.getContentPane().add(box);
frame.pack();
frame.setVisible(true);
}

public static void main(String [] args) {
Tester tester = new Tester();
}
}

使用 getStateChange 来确定一个项目是被选中还是取消选中

关于java - 为什么更改时 JComboBox 上的 itemStateChanged 会被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com