Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào chúng ta có thể sắp xếp các mục của một JComboBox trong Java?


A JComboBox là một lớp con của JComponent lớp và nó là sự kết hợp của trường văn bản danh sách thả xuống từ đó người dùng có thể chọn một giá trị. A JComboBox có thể tạo ActionListener, ChangeListener, ItemListener giao diện khi người dùng thao tác trên hộp tổ hợp. Theo mặc định, JComboBox không hỗ trợ sắp xếp các mục, chúng tôi có thể tùy chỉnh mã bằng cách mở rộng DefaultComboBoxModel lớp học.

Ví dụ

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

Đầu ra

Làm thế nào chúng ta có thể sắp xếp các mục của một JComboBox trong Java?