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
Tóm Tắt
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:
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: