Java Swing动态JComboBox

标签 java swing jcombobox

我已从数据库填充了组合框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并在 Model 中添加/删除/更改 Items,而不是在 JComboBox 中,也不是在 Array 中的某个位置, ListVector,当然可以,但您必须在 EDT 上执行代码并始终替换 ArrayList或具体 JComboBoxVector,不要这样做:-)

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

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

相关文章:

java - Android Activity 未完成并且不启动之前的 Activity

java - Android 媒体记录器 : How to add new codec in MPEG_4 or any audio format

java - Java 7 的 SSL 连接失败

java - 在 JTable 中添加 JSpinner 时出现非法参数异常

java - 按日期排序表条目

java - 如何让两个 JComboBox 具有相同的元素?

java - 字符串[]到对象[] Java

java - 扩展 AlertDialog

java - swing:有没有办法让按钮/复选框只有在按下 SHIFT 或 CTRL 时才可单击?

java - 如何从文本文件填充Java中的两个组合框?