ทั้ง JRadioButton และ JCheckBox ขยายมาจากคลาส JToggleButton ความแตกต่างหลักคือ JRadioButton เป็นกลุ่มปุ่มที่ เลือกได้เพียงปุ่มเดียวในเวลาเดียวกัน ส่วน JCheckBox เป็นกลุ่มเช็กบ็อกซ์ที่ เลือกได้หลายรายการพร้อมกัน
JRadioButton
- คอมโพเนนต์แสดงตัวเลือกที่มีสถานะเลือก/ไม่เลือก ใช้เป็นกลุ่มเพื่อให้ผู้ใช้เลือก เพียงหนึ่งตัวเลือก
- สร้าง Listener ได้: ActionListener, ChangeListener, ItemListener
- ใช้ร่วมกับ ButtonGroup เพื่อบังคับให้เลือกได้เพียงตัวเดียว (ButtonGroup ไม่มีรูปลักษณ์ตัวเอง)
- เมธอดสำคัญ: setText(), getText(), setEnabled(), setMnemonic()
ตัวอย่าง 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
- คอมโพเนนต์แสดงรายการที่มีสถานะเลือก/ไม่เลือก เปลี่ยนสถานะได้โดยคลิกที่เช็กบ็อกซ์
- ประกอบด้วย เช็กบ็อกซ์ และ ป้ายชื่อ (label)
- สร้าง Listener ได้: ItemListener หรือ ActionListener
- เมธอดสำคัญ: setLabel(), getLabel(), setState(), getState()
ตัวอย่าง 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); // เลือกไว้ก่อน
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(); }
});
}
}
สรุปความแตกต่าง
| คุณสมบัติ | JRadioButton | JCheckBox |
|---|---|---|
| การเลือก | เดียว (Single) | หลาย (Multiple) |
| กลุ่ม | ต้องใช้ ButtonGroup | ไม่จำเป็น |
| Listener | Action, Change, Item | Item, Action |