4

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

我已从字符串数组中的数据库中检索数据。现在我怎样才能将这个字符串数组填充到 JComboBox 中

已编辑=================================================== ====================

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

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

以下是Nebeans生成的代码。

jComboBox15 = new javax.swing.JComboBox();

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

jComboBox15.setName("jComboBox15");

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

4

5 回答 5

4

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

comboBox.removeAllItems();

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

确保这是从 EDT 完成的!

于 2010-01-19T17:56:42.603 回答
3

I think that what NetBeans does is what you need.

From wherever you want, you can create a DefaultComboBoxModel object and then invoke comboBox.setModel(defaultComboBox);

Here is a very small example of what I think you want to do: when the user clicks the button "Change data" the comboBox is filled with data from an array (method 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);
    }
}
于 2010-01-19T18:20:26.090 回答
3
new JComboBox(stringArray);

一个有用的提示——当你知道你正在使用什么类时,检查它的 javadoc。它通常包含您需要的信息。

编辑:更新后,使用:

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

(我的提示仍然适用)

于 2010-01-19T17:56:07.910 回答
3

这是一篇关于它的优秀文章:如何使用组合框(Java 教程)

基本上:

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

您需要了解其他信息,例如

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

那篇文章包含有关它的信息。

编辑

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

DefaultComboBoxModel dcm = new DefaultComboBoxModel();
combo.setModel( dcm );
....
for( String newRow : dataFetched ) {
    dcm.addElement( newRow )
}
于 2010-01-19T17:56:15.457 回答
1
JComboBox jComboOperator = new JComboBox();

arrOperatorName = new String []{"Visa", "MasterCard", "American Express"};
jComboOperator.setModel(new DefaultComboBoxModel(arrOperatorName));
于 2016-07-22T06:38:41.347 回答