Java Swing - Lớp JComboBox

Lớp JComboBox trong Java Swing

Lớp JComboBox trong Java Swing là một thành phần mà kết hợp một button, một trường có thể chỉnh sửa và một drop-down list. Tại một thời điểm chỉ có một item có thể được lựa chọn từ list. Cú pháp khai báo cho lớp javax.swing.JComboBox là:

public class JComboBox
   extends JComponent
      implements ItemSelectable, ListDataListener, 
         ActionListener, Accessible

Lớp này kế thừa các phương thức từ các lớp sau:

  • javax.swing.JComponent

  • java.awt.Container

  • java.awt.Component

  • java.lang.Object


Lớp JComboBox bao gồm các trường sau:

  • protected String actionCommand

  • protected ComboBoxModel dataModel

  • protected ComboBoxEditor editor

  • protected boolean isEditable

  • protected JComboBox.KeySelectionManager keySelectionManager

  • protected boolean lightWeightPopupEnabled

  • protected int maximumRowCount

  • protected ListCellRenderer renderer

  • protected Object selectedItemReminder


Các constructor được sử dụng phổ biến của lớp JComboBox

JComboBox(): Tạo một JComboBox với data model mặc định.

JComboBox(Object[] items): Tạo một JComboBox mà chứa các phần tử trong mảng đã cho.

JComboBox(Vector items): Tạo một JComboBox mà chứa các phần tử trong Vector đã cho.


Các phương thức được sử dụng phổ biến của lớp JComboBox

public void addItem(Object anObject): được sử dụng để thêm một item tới list.

public void removeItem(Object anObject): được sử dụng để xóa một item từ list.

public void removeAllItems(): được sử dụng để xóa tất cả item từ list.

public void setEditable(boolean b): được sử dụng để xác định xem có hay không JComboBox là editable.

public void addActionListener(ActionListener a): được sử dụng để thêm ActionListener.

public void addItemListener(ItemListener i): được sử dụng để thêm ItemListener.


Chương trình ví dụ đơn giản đầu tiên về lớp JComboBox trong Java Swing

package vn.viettuts.swing;
 
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
public class JComboBoxExam1 {
    JFrame f;
 
    JComboBoxExam1() {
        f = new JFrame("Vi du combobox - java swing");
 
        String city[] = { "Ha Noi", "Vinh Phuc", "Da Nang", 
                "TP. Ho Chi Minh", "Nha Trang" };
 
        JComboBox cb = new JComboBox(city);
        cb.setBounds(100, 50, 150, 20);
        f.add(cb);
         
        JLabel cityLabel = new JLabel("City: ");
        cityLabel.setBounds(50, 50, 80, 20);
        f.add(cityLabel);
 
        f.setLayout(null);
        f.setSize(400, 300);
        f.setVisible(true);
    }
 
    public static void main(String[] args) {
        new JComboBoxExam1();
    }
} 

Chạy chương trình trên cho kết quả như sau:

Lớp JComboBox trong Java Swing


Một chương trình khác về lớp JComboBox

package vn.viettuts.swing;
 
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
 
public class JComboBoxExam2 {
 
    private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;
 
    public JComboBoxExam2(){
      prepareGUI();
   }
 
    public static void main(String[] args) {
        JComboBoxExam2 swingDemo = new JComboBoxExam2();
        swingDemo.showComboboxDemo();
    }
 
    private void prepareGUI() {
        mainFrame = new JFrame("Vi du combobox - java swing");
        mainFrame.setSize(400, 400);
        mainFrame.setLayout(new GridLayout(3, 1));
        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });
        headerLabel = new JLabel("", JLabel.CENTER);
        statusLabel = new JLabel("", JLabel.CENTER);
        statusLabel.setSize(350, 100);
        controlPanel = new JPanel();
        controlPanel.setLayout(new FlowLayout());
        mainFrame.add(headerLabel);
        mainFrame.add(controlPanel);
        mainFrame.add(statusLabel);
        mainFrame.setVisible(true);
    }
 
    private void showComboboxDemo() {
        headerLabel.setText("Control in action: JComboBox");
        final DefaultComboBoxModel cityName = new DefaultComboBoxModel();
        cityName.addElement("Ha Noi");
        cityName.addElement("TP. HCM");
        cityName.addElement("Da Nang");
        cityName.addElement("Hai Phong");
        final JComboBox fruitCombo = new JComboBox(cityName);
        fruitCombo.setSelectedIndex(0);
        JScrollPane fruitListScrollPane = new JScrollPane(fruitCombo);
        JButton showButton = new JButton("Show");
        showButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String data = "";
                if (fruitCombo.getSelectedIndex() != -1) {
                    data = "City Selected: " + fruitCombo.getItemAt(
                            fruitCombo.getSelectedIndex());
                }
                statusLabel.setText(data);
            }
        });
        controlPanel.add(fruitListScrollPane);
        controlPanel.add(showButton);
        mainFrame.setVisible(true);
    }
}

Chạy chương trình trên cho kết quả như sau:

Lớp JComboBox trong Java Swing



Chatbot Tư vấn Lộ trình CNTT 🤖
Chào bạn! Tôi có thể tư vấn về các lộ trình học CNTT dựa trên roadmap.w3typing.com. Hãy chọn một từ khóa dưới đây hoặc gõ câu hỏi của bạn (ví dụ: "Frontend", "Backend", "Python", "DevOps").