Cả JRadioButton và JCheckBox đều kế thừa từ lớp JToggleButton. Khác biệt chính: JRadioButton là nhóm nút bấm nơi chỉ một nút được chọn tại một thời điểm, trong khi JCheckBox là nhóm hộp kiểm nơi có thể chọn nhiều mục cùng lúc.
JRadioButton
- Thành phần biểu diễn mục có trạng thái chọn/bỏ chọn. Thường dùng theo nhóm để cung cấp các lựa chọn, nhưng chỉ một tùy chọn được chọn tại một thời điểm.
- Tạo ra các interface: ActionListener, ChangeListener, ItemListener.
- Thường dùng với lớp ButtonGroup để đảm bảo chỉ một nút được chọn. ButtonGroup không có giao diện hiển thị.
- Phương thức quan trọng: setText(), getText(), setEnabled(), setMnemonic().
Ví dụ JRadioButton
import java.awt.*;
import javax.swing.*;
public class JRadioButtonTest extends JFrame {
public JRadioButtonTest() {
super("JRadioButton Test");
JRadioButton jrb1 = new JRadioButton("Java");
JRadioButton jrb2 = new JRadioButton("Python");
JRadioButton jrb3 = new JRadioButton("Scala");
ButtonGroup group = new ButtonGroup();
group.add(jrb1);
group.add(jrb2);
group.add(jrb3);
setLayout(new FlowLayout());
add(jrb1);
add(jrb2);
add(jrb3);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(450,375);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JRadioButtonTest();
}
});
}
}
JCheckBox
- Thành phần biểu diễn mục với trạng thái chọn/bỏ chọn. Trạng thái thay đổi khi click vào hộp kiểm.
- Thành phần tiêu chuẩn chứa một hộp kiểm (checkbox) và một nhãn (label) mô tả mục đích.
- Có thể tạo ra ItemListener hoặc ActionListener.
- Phương thức quan trọng: setLabel(), getLabel(), setState(), getState().
Ví dụ JCheckBox
import java.awt.*;
import javax.swing.*;
public class JCheckBoxTest extends JFrame {
JCheckBoxTest() {
super("JCheckBox Test");
JLabel lblHobbies = new JLabel("Languages");
JCheckBox chkSports = new JCheckBox("Java");
JCheckBox chkMusic = new JCheckBox("Python ", true); // mặc định chọn
JCheckBox chkReading = new JCheckBox("Scala");
setLayout(new FlowLayout());
add(lblHobbies);
add(chkSports);
add(chkMusic);
add(chkReading);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(450,375);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JCheckBoxTest();
}
});
}
}
Tóm tắt so sánh
| Đặc điểm | JRadioButton | JCheckBox |
|---|---|---|
| Số lựa chọn cùng lúc | Một (single) | Nhiều (multiple) |
| Cần ButtonGroup | Có | Không bắt buộc |
| Interface sự kiện | ActionListener, ChangeListener, ItemListener | ItemListener, ActionListener |