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

Làm thế nào chúng ta có thể triển khai JComboBox có thể chỉnh sửa trong Java?

JComboBox

  • A JComboBox có thể mở rộng 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ị.
  • Nếu phần trường văn bản của điều khiển có thể chỉnh sửa được, thì người dùng có thể nhập giá trị vào trường hoặc chỉnh sửa giá trị được truy xuất từ ​​danh sách thả xuống.
  • Theo mặc định, người dùng không được phép chỉnh sửa dữ liệu trong phần trường văn bản của JComboBox . Nếu chúng tôi muốn cho phép người dùng chỉnh sửa trường văn bản, hãy gọi setEditable (true) phương pháp.
  • A JComboBox có thể tạo ActionListener , ChangeListener hoặc ItemListener khi người dùng thao tác trên hộp tổ hợp.
  • A getSelectedItem () có thể được sử dụng để lấy mục đã chọn hoặc đã nhập từ JComboBox.

Ví dụ

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JEditableComboBoxTest extends JFrame {
   public JEditableComboBoxTest() {
      setTitle("JEditableComboBox Test");
      setLayout(new BorderLayout());
      final JComboBox combobox = new JComboBox();
      final JList list = new JList(new DefaultListModel());
      add(BorderLayout.NORTH, combobox);
      add(BorderLayout.CENTER, list);
      combobox.setEditable(true);
      combobox.addItemListener(new ItemListener() {
         public void itemStateChanged(ItemEvent ie) {
            if (ie.getStateChange() == ItemEvent.SELECTED) {
               ((DefaultListModel) list.getModel()).addElement(combobox.getSelectedItem());
               combobox.insertItemAt(combobox.getSelectedItem(), 0);
            }
         }
      });
      setSize(new Dimension(375, 250));
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) throws Exception {
      new JEditableComboBoxTest();
   }
}

Đầu ra

Làm thế nào chúng ta có thể triển khai JComboBox có thể chỉnh sửa trong Java?