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