相关疑难解决方法(0)

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

我正在使用带有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);
}
Run Code Online (Sandbox Code Playgroud)

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

One
Three
Run Code Online (Sandbox Code Playgroud)

有没有一种方法我可以使用ItemEvent告诉它,它是第二项(即用户选择的项目)?如果有人可以解释为什么它被调用两次,那也会很好!

谢谢

java swing jcombobox itemlistener

36
推荐指数
5
解决办法
6万
查看次数

Java Swing Combobox removeAllItems调用ItemStateChanged也?

我的代码实际上非常简单.我看到了一个简单而类似的代码是从这篇文章.

起初,我有1个组合框.我有一个名为itemStateChanged()的监听器.我加入这个监听器的目的是:" 当用户从其保管箱中点击(选择)一个项目时执行一些代码 ".

Cmb_ItemCategory = new javax.swing.JComboBox();

Cmb_ItemCategory.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Loading..." }));

Cmb_ItemCategory.addItemListener(new java.awt.event.ItemListener() {
    public void itemStateChanged(java.awt.event.ItemEvent evt) {
        Cmb_ItemCategoryItemStateChanged(evt);
    }
});

private void Cmb_ItemCategoryItemStateChanged(java.awt.event.ItemEvent evt) {

        if(evt.getStateChange() == java.awt.event.ItemEvent.SELECTED){
        System.err.println("Sombody click or change my model content");
        }

    }
Run Code Online (Sandbox Code Playgroud)

在代码后面,我获取一些数据,然后调用removeAllItems()方法.然后我将新模型(从新数据)设置到其中.

-- at another line of code ---
Cmb_ItemCategory.removeAllItems();
Cmb_ItemCategory.setModel(newModel);
Run Code Online (Sandbox Code Playgroud)

我juz意识到当我执行removeAllItem()方法时调用了我的itemStateChanged().叫了一次.

那么,如何使它只调用一次用户单击(选择)而不是当removeAllItems()调用时?

它类似于这篇文章.但它不是removeItems案例.CMIIW.

java methods swing jcombobox comboboxmodel

2
推荐指数
1
解决办法
7773
查看次数

标签 统计

java ×2

jcombobox ×2

swing ×2

comboboxmodel ×1

itemlistener ×1

methods ×1