Lớp JComboBox 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
import javax.swing.*; public class Combo { JFrame f; Combo(){ f=new JFrame("Combo ex"); String country[]={"India","Aus","U.S.A","England","Newzeland"}; JComboBox cb=new JComboBox(country); cb.setBounds(50, 50,90,20); f.add(cb); f.setLayout(null); f.setSize(400,500); f.setVisible(true); } public static void main(String[] args) { new Combo(); } }
Một chương trình khác về lớp JComboBox
package com.hoclaptrinh.gui; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SwingControlDemo { private JFrame mainFrame; private JLabel headerLabel; private JLabel statusLabel; private JPanel controlPanel; public SwingControlDemo(){ prepareGUI(); } public static void main(String[] args){ SwingControlDemo swingControlDemo = new SwingControlDemo(); swingControlDemo.showComboboxDemo(); } private void prepareGUI(){ mainFrame = new JFrame("Vi du 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 fruitsName = new DefaultComboBoxModel(); fruitsName.addElement("Apple"); fruitsName.addElement("Grapes"); fruitsName.addElement("Mango"); fruitsName.addElement("Peer"); final JComboBox fruitCombo = new JComboBox(fruitsName); 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 = "Fruits Selected: " + fruitCombo.getItemAt (fruitCombo.getSelectedIndex()); } statusLabel.setText(data); } }); controlPanel.add(fruitListScrollPane); controlPanel.add(showButton); mainFrame.setVisible(true); } }