2011-09-12 38 views
10
Vector comboBoxItems = new Vector(); 
DefaultComboBoxModel model; 
// ComboBox Items have gotten from Data Base initially. 
model = new DefaultComboBoxModel(ComboBoxItems); 
JComboBox box = new JComboBox(model); 

Tôi đã thêm hộp tổ hợp này vào bảng điều khiển. Nếu tôi thêm một số mục trong cơ sở dữ liệu trực tiếp, tôi muốn những mục mới được thêm vào hiển thị trong hộp kết hợp.Tự động thêm các mục vào JComboBox

Tôi có thể thấy các giá trị trong comboBoxItems khi tôi gỡ lỗi, nhưng các giá trị đó không xuất hiện trong hộp kết hợp của tôi.

Làm cách nào để có được các giá trị mới được thêm vào hộp tổ hợp mà không đóng bảng?

+1

câu hỏi, JComboBox có thể được sử dụng và trong cùng thời gian này được/được thêm vào (s) mới mục – mKorbel

+0

Nó * nên * làm việc - [đây là một đoạn mã có sử dụng các nhà xây dựng cùng ] (http://www.java2s.com/Code/JavaAPI/javax.swing/newJComboBoxVectoritems.htm) –

+0

bạn phải thêm các mục vào mô hình, không phải cho các vector cơ bản - chỉ vì vậy các thông báo bắt buộc được kích hoạt! – kleopatra

Trả lời

26

Cách sử dụng ComboBoxModel? Một cái gì đó như thế này ....

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); 
4

ví dụ:

enter image description here enter image description here enter image description here

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(); 
      } 
     }); 
    } 
} 
0

động thêm các mục như JComboBox, JTextField và IMAGEtrong

Please,Show this image on display, how many items added or Table Fields size

After second images are display on Items like JComboBox,JTextField and 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<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)); 

} 
Các vấn đề liên quan