gpt4 book ai didi

Java Swing Combobox removeAllItems 也调用 ItemStateChanged 吗?

转载 作者:行者123 更新时间:2023-12-03 23:27:36 25 4
gpt4 key购买 nike

其实我的代码很简单。我看到一个简单而相似的代码来自 this article .

起初,我有 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");
}

}

在代码后面,我抓取了一些数据,然后调用了 removeAllItems() 方法。然后我在其中设置了一个新模型(来自新数据)。

-- at another line of code ---
Cmb_ItemCategory.removeAllItems();
Cmb_ItemCategory.setModel(newModel);

我只是意识到当我执行removeAllItem() 方法时我的itemStateChanged() 被调用。叫过一次。

那么,如何让它只在用户单击(选择)时调用,而不是在调用 removeAllItems() 时调用?

它类似于this article.但这不是 removingItems 的情况。 CMIIW.

最佳答案

在这里检查这段代码,它完美地工作,可能是你在调用 removeAllItems() 时做错了什么:

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

public class ComboState
{
private void createAndDisplayGUI()
{
JFrame frame = new JFrame("Combo State Testing : ");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

final JComboBox cbox = new JComboBox();
cbox.addItem("One");
cbox.addItem("Two");
cbox.addItem("Three");
cbox.addItem("Four");
cbox.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent ie)
{
if (ie.getStateChange() == ItemEvent.SELECTED)
{
System.out.println("Item Selected is : " + ie.getItem());
}
/*else
{
System.out.println("I am called for other reasons.");
}*/
}
});

/*
* Click me to remove JComboBox's items.
*/
JButton removeButton = new JButton("REMOVE");
removeButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
cbox.removeAllItems();
}
});

frame.add(cbox, BorderLayout.CENTER);
frame.add(removeButton, BorderLayout.PAGE_END);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new ComboState().createAndDisplayGUI();
}
});
}
}

关于Java Swing Combobox removeAllItems 也调用 ItemStateChanged 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10202718/

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