Java 向JComboBox动态添加项

Java 向JComboBox动态添加项,java,swing,jcombobox,Java,Swing,Jcombobox,我将这个组合框添加到面板中。如果我直接在数据库中添加一些项目,我希望这些新添加的项目显示在组合框中 调试时,我可以在comboBoxItems中看到值,但这些值不会出现在我的组合框中 如何在不关闭面板的情况下将这些新添加的值放入组合框?如何使用ComboBoxModel?像这样的 Vector comboBoxItems = new Vector(); DefaultComboBoxModel model; // ComboBox Items have gotten from Data Base

我将这个组合框添加到面板中。如果我直接在数据库中添加一些项目,我希望这些新添加的项目显示在组合框中

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


如何在不关闭面板的情况下将这些新添加的值放入组合框?

如何使用ComboBoxModel?像这样的

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

import java.awt.*;
导入java.awt.event.*;
导入java.util.*;
导入javax.swing.*;
公共类ComboBox扩展了JFrame{
私有静态最终长serialVersionUID=1L;
专用JComboBox组合框;
私有JTextField textField;
公共ComboxSorted(){
textField=新的JTextField(15);
addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
comboBox.addItem(textField.getText());
textField.setText(“”);
comboBox.showPopup();
}
});
字符串[]项={“一”、“二”、“三”、“四”、“五”};
SortedComboxModel=新的SortedComboxModel(项目);
comboBox=新的JComboBox(型号);
comboBox.setPrototypeDisplayValue(“XXXXXXXXXXXXXXXXXXXXXXXXXXXXX”);
JFrame=newjframe(“在运行时添加项”);
frame.setDefaultCloseOperation(关闭时退出);
frame.add(组合框,BorderLayout.SOUTH);
frame.add(textField,BorderLayout.WEST);
frame.add(新的JLabel(“输入以添加项目”),BorderLayout.EAST);
frame.pack();
帧设置位置(150150);
frame.setVisible(true);
}
私有类SortedComboxModel扩展了DefaultComboxModel{
私有静态最终长serialVersionUID=1L;
公共分类BoxModel(){
超级();
}
公共分类BoxModel(对象[]项){
数组。排序(项);
int size=items.length;
对于(int i=0;i0){
打破
}
}
super.insertElementAt(元素,索引);
}
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
@凌驾
公开募捐{
ComboBoxSorted ComboBoxSorted=新ComboBoxSorted();
}
});
}
}
动态添加JComboBox、JTextField和ImageIcon等项

例如:count=3
//在方法上方动态添加项或组件
公共无效数据加总(整数计数)
{
//动态删除/删除图标
BuffereImage Drop_Tablefield=null;
试一试{
Drop_Tablefield=ImageIO.read(this.getClass().getResource(“/images/Drop.png”);
}捕获(IOEX异常){
msg(“错误:在表格上放置并编辑图标,”+ex);
}
//计算已执行循环的项目数。。

对于(int i=0;iquestion,可以使用JComboBox,同时添加新项,它应该可以工作-您必须将项添加到模型,而不是基础向量-只有这样才能触发所需的通知!
    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();
            }
        });
    }
}
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<count;i++)
 {
     //cnt++;
     //lblcount.setText("Count : "+cnt);
     JTextField txtcolnm=new JTextField("",20);
     JComboBox cmbtype=new JComboBox();
     JTextField txtcolsize=new JTextField("",20);

     JButton Drop_Table_Field = new JButton(new ImageIcon(Drop_Tablefield));

     cmbtype.addItem("INTEGER"); cmbtype.addItem("FLOAT");
     cmbtype.addItem("STRING");  cmbtype.addItem("BOOLEAN");

     colnamepanel.add(txtcolnm);   colnamepanel.add(cmbtype);
     colnamepanel.add(txtcolsize); colnamepanel.add(Drop_Table_Field);

     colnamepanel.setAutoscrolls(true);

     //refresh panel
     colnamepanel.revalidate();
     colnamepanel.repaint();

     //set the layout on Jpanel
     colnamepanel.setLayout(new FlowLayout(FlowLayout.LEFT,5,0));

 }