A JComboBox เป็นคลาสย่อยของ JComponent class และมันคือการรวมกันของ ฟิลด์ข้อความ และ รายการแบบเลื่อนลง ซึ่งผู้ใช้สามารถเลือกค่าได้ JComboBox สามารถสร้าง ActionListener, ChangeListener, และ ItemListener อินเทอร์เฟซเมื่อผู้ใช้ดำเนินการกับกล่องคำสั่งผสม โดยค่าเริ่มต้น JComboBox ไม่รองรับการเรียงลำดับรายการ เราสามารถปรับแต่งรหัสโดยขยาย DefaultComboBoxModel ชั้นเรียน
ตัวอย่าง
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class JComboBoxSorterTest extends JFrame {
private JComboBox comboBox;
private JTextField textField;
public JComboBoxSorterTest() {
setTitle("JComboBoxSorter Test");
setLayout(new FlowLayout());
textField = new JTextField(10);
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
comboBox.addItem(textField.getText());
textField.setText("");
comboBox.showPopup();
}
});
String[] items = {"raja", "archana", "vineet", "krishna", "adithya"};
SortedComboBoxModel model = new SortedComboBoxModel(items);
comboBox = new JComboBox(model);
comboBox.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
Box box1 = Box.createHorizontalBox();
box1.add(new JLabel("Enter a name and hit enter "));
box1.add(textField);
Box box2 = Box.createHorizontalBox();
box2.add(comboBox);
add(box1);
add(box2);
setSize(375, 250);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
// Customize the code for sorting of items in the JComboBox
private class SortedComboBoxModel extends DefaultComboBoxModel {
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));
}
public void addElement(Object element) {
insertElementAt(element, 0);
}
public void insertElementAt(Object element, int index) {
int size = getSize();
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) {
new JComboBoxSorterTest();
}
} ผลลัพธ์
