Lớp JComboBox trong Java Swing – Học Java Swing online – VietTuts

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