Vector comboBoxItems = new Vector();
DefaultComboBoxModel model;
// ComboBox Items have gotten from Data Base initially.
model = new DefaultComboBoxModel(ComboBoxItems);
JComboBox box = new JComboBox(model);
このコンボボックスをパネルに追加しました。データベースにいくつかのアイテムを直接追加する場合、それらの新しく追加されたアイテムをコンボボックスに表示する必要があります。
デバッグするとcomboBoxItems
の値が表示されますが、これらの値はコンボボックスに表示されません。
パネルを閉じずに、新しく追加された値をコンボボックスに取得するにはどうすればよいですか?
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などのアイテムに2番目の画像が表示された後
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));
}