Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธี Sort Items ของ JComboBox ใน Java

JComboBox เป็น subclass ของ JComponent เป็นการรวมของ text field และ drop-down list ที่ user เลือกค่าได้ JComboBox สร้าง ActionListener, ChangeListener และ ItemListener interfaces เมื่อ user กระทำบน combo box โดย default JComboBox ไม่รองรับการ sort items เราสามารถปรับแต่งโค้ดได้โดย extend คลาส 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);
    }

    // ปรับแต่งโค้ดสำหรับ sorting items ใน 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();
    }
}

Output

วิธี Sort Items ของ JComboBox ใน Java