Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java中的数据加载已经实例化的JComboBox?_Java_User Interface_Swing_Jcombobox - Fatal编程技术网

如何使用Java中的数据加载已经实例化的JComboBox?

如何使用Java中的数据加载已经实例化的JComboBox?,java,user-interface,swing,jcombobox,Java,User Interface,Swing,Jcombobox,我有一个Swings GUI,其中包含一个JComboBox,我想从数据库将数据加载到其中 我已从数据库中检索到字符串数组中的数据。现在,我如何将这个字符串数组填充到JComboBox中 编辑==================================================================== 实际上,当java GUI显示给用户时,JComboBox已经被实例化。所以我不能将数组作为参数传递给构造函数 如何填充已实例化的JComboBox 下面是Nebeans

我有一个Swings GUI,其中包含一个JComboBox,我想从数据库将数据加载到其中

我已从数据库中检索到字符串数组中的数据。现在,我如何将这个字符串数组填充到JComboBox中

编辑====================================================================

实际上,当java GUI显示给用户时,JComboBox已经被实例化。所以我不能将数组作为参数传递给构造函数

如何填充已实例化的JComboBox

下面是Nebeans生成的代码

jComboBox15 = new javax.swing.JComboBox();

jComboBox15.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "12" }));

jComboBox15.setName("jComboBox15");
我可以将另一个ComboxModel设置为上述jComboBox吗

new JComboBox(stringArray);
一个有用的提示-当你知道你在使用什么类时,检查一下。它通常包含您需要的信息

编辑:更新后,使用:

for (String string : stringArray) {
   comboBox.addItem(string);
}

(我的建议仍然适用)

这里有一篇关于它的优秀文章:

基本上:

String[] dbData = dateFromDb();
JComboBox dbCombo = new JComboBox(dbData);
你需要知道其他事情,比如

  • 使用不可编辑的组合框
  • 处理组合框上的事件
  • 使用可编辑的组合框
  • 提供自定义渲染器
  • 组合框API
  • 使用组合框的示例
那篇文章包含关于它的信息

编辑

是的,你可以做你在编辑过的文章中显示的事情,或者保留对组合模型的引用:

DefaultComboBoxModel dcm = new DefaultComboBoxModel();
combo.setModel( dcm );
....
for( String newRow : dataFetched ) {
    dcm.addElement( newRow )
}

啊,组合框已经实例化了。。。。在这种情况下,只需清除内容并逐项添加新数组:

comboBox.removeAllItems();

for(String str : strArray) {
   comboBox.addItem(str);
}

确保这是从EDT完成的

我认为NetBeans所做的正是您所需要的

无论您在哪里,都可以创建
defaultcomboxmodel
对象,然后调用
comboBox.setModel(defaultComboBox)

下面是一个非常小的示例,说明了我认为您想要做的事情:当用户单击“更改数据”按钮时,组合框中会充满来自数组的数据(方法
操作执行


现在,此更新更有意义;)
public class TestJComboBox extends JFrame {
    private JComboBox comboBox = new JComboBox();

    public TestJComboBox() {

        JButton changeComboBoxData = new JButton("Change data");
        changeComboBoxData.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                DefaultComboBoxModel cbm = new DefaultComboBoxModel(
                        new String[] { "hola", "adios" });
                comboBox.setModel(cbm);
            }
        });

        super.setLayout(new BorderLayout(10, 10));
        super.setSize(100, 100);
        super.add(changeComboBoxData, BorderLayout.NORTH);
        super.add(comboBox, BorderLayout.SOUTH);
    }

    public static void main(String[] args) {
        new TestJComboBox().setVisible(true);
    }
}
JComboBox jComboOperator = new JComboBox();

arrOperatorName = new String []{"Visa", "MasterCard", "American Express"};
jComboOperator.setModel(new DefaultComboBoxModel(arrOperatorName));