动态添加项目到JComboBox

Vector comboBoxItems = new Vector(); DefaultComboBoxModel model; // ComboBox Items have gotten from Data Base initially. model = new DefaultComboBoxModel(ComboBoxItems); JComboBox box = new JComboBox(model); 

我将这个combobox添加到面板中。 如果我直接在数据库中添加一些项目,我想要在combobox中显示这些新添加的项目。

我在调试时可以看到comboBoxItems的值,但这些值不会出现在我的combobox中。

如何在不关闭面板的情况下将这些新添加的值添加到combobox中?

如何使用ComboBoxModel? 像这样……

  JFrame frame = new JFrame("Combo Box Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200, 200); frame.setLayout(new FlowLayout()); Vector comboBoxItems=new Vector(); comboBoxItems.add("A"); comboBoxItems.add("B"); comboBoxItems.add("C"); comboBoxItems.add("D"); comboBoxItems.add("E"); final DefaultComboBoxModel model = new DefaultComboBoxModel(comboBoxItems); JComboBox comboBox = new JComboBox(model); frame.add(comboBox); JButton button = new JButton("Add new element in combo box"); frame.add(button); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { model.addElement("F"); } }); frame.setVisible(true); 

例如:

在此处输入图像描述在此处输入图像描述在此处输入图像描述

 import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class ComboBoxSorted extends JFrame { private static final long serialVersionUID = 1L; private JComboBox comboBox; private JTextField textField; public ComboBoxSorted() { textField = new JTextField(15); textField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { comboBox.addItem(textField.getText()); textField.setText(""); comboBox.showPopup(); } }); String[] items = {"one", "two", "three", "four", "five"}; SortedComboBoxModel model = new SortedComboBoxModel(items); comboBox = new JComboBox(model); comboBox.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); JFrame frame = new JFrame("Add Item on Runtime"); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.add(comboBox, BorderLayout.SOUTH); frame.add(textField, BorderLayout.WEST); frame.add(new JLabel("Enter to add Item "), BorderLayout.EAST); frame.pack(); frame.setLocation(150, 150); frame.setVisible(true); } private class SortedComboBoxModel extends DefaultComboBoxModel { private static final long serialVersionUID = 1L; public SortedComboBoxModel() { super(); } public SortedComboBoxModel(Object[] items) { Arrays.sort(items); int size = items.length; for (int i = 0; i < size; i++) { super.addElement(items[i]); } setSelectedItem(items[0]); } public SortedComboBoxModel(Vector items) { Collections.sort(items); int size = items.size(); for (int i = 0; i < size; i++) { super.addElement(items.elementAt(i)); } setSelectedItem(items.elementAt(0)); } @Override public void addElement(Object element) { insertElementAt(element, 0); } @Override public void insertElementAt(Object element, int index) { int size = getSize(); // Determine where to insert element to keep model in sorted order for (index = 0; index < size; index++) { Comparable c = (Comparable) getElementAt(index); if (c.compareTo(element) > 0) { break; } } super.insertElementAt(element, index); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { ComboBoxSorted comboBoxSorted = new ComboBoxSorted(); } }); } } 

动态添加JComboBox,JTextField和ImageIcon等项

请显示此图像,添加了多少项或表字段大小

在第二个图像显示在像JComboBox,JTextField和ImageIcon之类的项目上

 for example : count=3 //Dynamically Adding Items or Component above method public void dya_addcomp(int count) { //Dynamicly Drop/Delete icon BufferedImage Drop_Tablefield = null; try { Drop_Tablefield = ImageIO.read(this.getClass().getResource("/images/drop.png")); } catch (IOException ex) { msg(" Error: drop and edit icon on Table, "+ex); } //count Items for loop executed.. for(int i=0;i