Lớp JRadioButton trong Java Swing là một trình triển khai của một radio button, một item mà có thể được lựa chọn hoặc không, và hiển thị trạng thái của nó tới người dùng. Lớp này nên được thêm vào trong ButtonGroup để chỉ lựa chọn một radio button.
Dưới đây là cú pháp khai báo cho lớp javax.swing.JRadioButton:
public class JRadioButton extends JToggleButton implements Accessible
Nội dung chính
Lớp này kế thừa các phương thức từ các lớp sau:
javax.swing.AbstractButton
javax.swing.JToggleButton
javax.swing.JComponent
java.awt.Container
java.awt.Component
java.lang.Object
Các constructor được sử dụng phổ biến của lớp JRadioButton:
JRadioButton(): Tạo một unselected radiobutton không có text.
JRadioButton(String s): Tạo một unselected radiobutton với text đã cho.
JRadioButton(String s, boolean selected): Tạo một radiobutton với text đã cho và trạng thái là selected.
Các phương thức được sử dụng phổ biến của lớp JRadioButton
AccessibleContext getAccessibleContext(): Lấy AccessibleContext được liên kết với JRadioButton này.
String getUIClassID(): Trả về tên của lớp L&F mà truyền thành phần này.
protected String paramString(): Trả về biểu diễn chuỗi của JRadioButton này.
void updateUI(): Phục hồi thuộc tính UI về một giá trị từ L&F hiện tại.
Chương trình ví dụ về lớp JRadioButton
JRadioButtonExam1.javapackage vn.viettuts.swing; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JRadioButton; public class JRadioButtonExam1 { JFrame frame; JRadioButtonExam1() { frame = new JFrame(); JRadioButton radioBtn1 = new JRadioButton("A) Male"); JRadioButton radioBtn2 = new JRadioButton("B) FeMale"); radioBtn1.setBounds(50, 60, 170, 30); radioBtn2.setBounds(50, 100, 170, 30); ButtonGroup bg = new ButtonGroup(); bg.add(radioBtn1); bg.add(radioBtn2); frame.add(radioBtn1); frame.add(radioBtn2); frame.setTitle("Vi du JRadioButton trong Java Swing"); frame.setSize(400, 250); frame.setLayout(null); frame.setVisible(true); } public static void main(String[] args) { new JRadioButtonExam1(); } }
Chương trình ví dụ khác về lớp JRadioButton
JRadioButtonExam2.javapackage vn.viettuts.swing; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; public class JRadioButtonExam2 { private JFrame mainFrame; private JLabel headerLabel; private JLabel statusLabel; private JPanel controlPanel; public JRadioButtonExam2() { prepareGUI(); } public static void main(String[] args) { JRadioButtonExam2 swingControlDemo = new JRadioButtonExam2(); swingControlDemo.showRadioButtonDemo(); } private void prepareGUI() { mainFrame = new JFrame("Vi du JRadioButton trong Java Swing"); mainFrame.setSize(400, 250); 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 showRadioButtonDemo() { headerLabel.setText("Control in action: RadioButton"); final JRadioButton radApple = new JRadioButton("Green", true); final JRadioButton radMango = new JRadioButton("Red"); final JRadioButton radPeer = new JRadioButton("Yellow"); radApple.setMnemonic(KeyEvent.VK_C); radMango.setMnemonic(KeyEvent.VK_M); radPeer.setMnemonic(KeyEvent.VK_P); radApple.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { statusLabel.setText("Green RadioButton: " + (e.getStateChange() == 1 ? "checked" : "unchecked")); } }); radMango.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { statusLabel.setText("Red RadioButton: " + (e.getStateChange() == 1 ? "checked" : "unchecked")); } }); radPeer.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { statusLabel.setText("Yellow RadioButton: " + (e.getStateChange() == 1 ? "checked" : "unchecked")); } }); // Group the radio buttons. ButtonGroup group = new ButtonGroup(); group.add(radApple); group.add(radMango); group.add(radPeer); controlPanel.add(radApple); controlPanel.add(radMango); controlPanel.add(radPeer); mainFrame.setVisible(true); } }
Lớp ButtonGroup trong Java Swing
Lớp ButtonGroup có thể được sử dụng để nhóm nhiều lớp lại với nhau, để mà tại một thời điểm, chỉ có một nút được lựa chọn. Ví dụ:
package vn.viettuts.swing; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JRadioButton; public class JRadioButtonExam3 extends JFrame implements ActionListener { JRadioButton rb1, rb2; JButton b; JRadioButtonExam3() { rb1 = new JRadioButton("Green"); rb1.setBounds(100, 50, 100, 30); rb2 = new JRadioButton("Red"); rb2.setBounds(100, 100, 100, 30); ButtonGroup bg = new ButtonGroup(); bg.add(rb1); bg.add(rb2); b = new JButton("click"); b.setBounds(100, 150, 80, 30); b.addActionListener(this); add(rb1); add(rb2); add(b); setTitle("Vi du JRadioButton trong Java Swing"); setSize(400, 250); setLayout(null); setVisible(true); } public void actionPerformed(ActionEvent e) { if (rb1.isSelected()) { JOptionPane.showMessageDialog(this, "Ban la Green"); } if (rb2.isSelected()) { JOptionPane.showMessageDialog(this, "Ban la Red"); } } public static void main(String args[]) { new JRadioButtonExam3(); } }
Chạy chương trình Java trên cho kết quả như sau: