【问题标题】:How to load already instantiated JComboBox with data in Java?如何用 Java 中的数据加载已经实例化的 JComboBox?
【发布时间】:2010-01-19 17:53:29
【问题描述】:

我有一个包含 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 吗?

【问题讨论】:

  • 现在这个更新更有意义了;)

标签: java user-interface swing jcombobox


【解决方案1】:

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

comboBox.removeAllItems();

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

确保这是从 EDT 完成的!

【讨论】:

    【解决方案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 )
    }
    

    【讨论】:

      【解决方案3】:
      new JComboBox(stringArray);
      

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

      编辑:更新后,使用:

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

      (我的提示仍然适用)

      【讨论】:

        【解决方案4】:

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

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

        这是我认为您想要做的一个非常小的示例:当用户单击“更改数据”按钮时,组合框将填充来自数组的数据(方法 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);
            }
        }
        

        【讨论】:

          【解决方案5】:
          JComboBox jComboOperator = new JComboBox();
          
          arrOperatorName = new String []{"Visa", "MasterCard", "American Express"};
          jComboOperator.setModel(new DefaultComboBoxModel(arrOperatorName));
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-08-07
            • 2013-04-21
            • 2020-01-29
            • 1970-01-01
            • 2013-09-14
            • 2015-07-05
            • 1970-01-01
            • 2019-11-21
            相关资源
            最近更新 更多