gpt4 book ai didi

Java Swing 动态 JComboBox

转载 作者:行者123 更新时间:2023-12-04 06:14:29 24 4
gpt4 key购买 nike

我已经从数据库填充了一个组合框 B1。当 itemStateChanged 事件引发时,它应该填充另一个组合框 B2,但它不起作用。

ArrayList1 = //call method in database connection class()
for (int j = 0; j < ArrayList1.size(); j++)
{
if (j == 0)
{
combobox1.addItem("Select Any");
}
combobox1.addItem(ArrayList1.get(j));
}


combobox1.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent ie)
{
String catName = (String)combobox1.getSelectedItem();
if (!catName.equalsIgnoreCase("Select Any"))
{
ArrayList2=//call method in DB class with cat_name as argument
for(int i=0;i < ArrayList2.size();i++)
{
if (i == 0)
{
combobox2.addItem("Select Any");
}
combobox2.addItem(ArrayList2.get(i));
}
}
}
});

第一个组合框从数据库中填充,但在从中选择任何项目后,第二个组合框保持为空。

为什么调试这个我的电脑挂起?

最佳答案

你必须实现 ComboBoxModel并添加/删除/更改 ItemsModel ,不在 JComboBox ,也不在 Array 中的某处, ListVector ,当然是可能的,但你必须在 EDT 上执行你的代码并始终替换 Array , ListVector用于混凝土 JComboBox ,不要这样做:-)

也许你有问题 Concurency in the Swing ,也许更改已完成,但在 EDT 之外,更多关于您的问题 pass events wrapped into invokeLater()multiple-jcombobox

关于Java Swing 动态 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7427511/

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