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:
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: