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

时间:2010-01-19 17:53:30

标签: java user-interface swing jcombobox

我有一个包含JComboBox的Swings GUI,我想从数据库中加载数据。

我在String Array中检索了数据库中的数据。现在我如何将这个String数组填充到JComboBox

EDITED ============================================== ======================

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

如何填充已经实例化的JComboBox?

以下是Nebeans生成代码的代码。

jComboBox15 = new javax.swing.JComboBox();

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

jComboBox15.setName("jComboBox15");

我可以将另一个ComboBoxModel设置为上面的jComboBox吗?

5 个答案:

答案 0 :(得分:4)

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

comboBox.removeAllItems();

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

确保这是从EDT完成的!

答案 1 :(得分:3)

我认为NetBeans所做的就是您所需要的。

您可以从任何地方创建DefaultComboBoxModel对象,然后调用comboBox.setModel(defaultComboBox);

以下是我认为您想要做的一个非常小的示例:当用户单击“更改数据”按钮时,comboBox将填充数组中的数据(方法actionPerformed)。

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);
    }
}

答案 2 :(得分:2)

new JComboBox(stringArray);

一个有用的提示 - 当您知道正在使用哪个班级时,请检查its javadoc。它通常包含您需要的信息。

编辑:更新后,使用:

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

(我的提示仍然适用)

答案 3 :(得分:2)

以下是关于它的优秀文章:How to use Combo Boxes ( The Java Tutorial )

基本上:

String[] dbData = dateFromDb();
JComboBox dbCombo = new JComboBox(dbData);

您需要了解其他内容,例如

  • 使用不可编辑的组合框
  • 处理组合框上的事件
  • 使用可编辑的组合框
  • 提供自定义渲染器
  • 组合框API
  • 使用组合框的示例

该文章包含有关它的信息。

修改

是的,您可以执行您在编辑后的帖子中显示的内容,也可以保留对组合模型的引用:

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

答案 4 :(得分:0)

JComboBox jComboOperator = new JComboBox();

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