Java 提供了丰富的图形用户界面(GUI)组件来构建桌面应用程序。在 Swing 中,JCheckBox
和 JRadioButton
是两个常用的组件,用于用户选择操作。本文将详细介绍如何使用这两个组件,带你深入理解它们的用法,并通过丰富的代码示例进行演示。
一、复选框 JCheckBox
的使用
JCheckBox
是用于提供多选功能的组件,用户可以选择一个或多个选项。它和 HTML 中的复选框类似。
1. 创建 JCheckBox
使用 JCheckBox
类来创建复选框,通常需要指定一个显示的标签文字。
import javax.swing.*;
import java.awt.*;
public class JCheckBoxExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JCheckBox 示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
// 创建多个复选框
JCheckBox checkBox1 = new JCheckBox("选项 1");
JCheckBox checkBox2 = new JCheckBox("选项 2");
JCheckBox checkBox3 = new JCheckBox("选项 3");
// 创建面板并添加复选框
JPanel panel = new JPanel();
panel.add(checkBox1);
panel.add(checkBox2);
panel.add(checkBox3);
// 添加面板到窗口
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
}
输出效果:
一个窗口展示三个复选框,标签分别为“选项 1”、“选项 2”、“选项 3”。
代码解析:
- 创建了一个
JCheckBox
实例,并指定了显示的文本。 - 通过面板
JPanel
将复选框组件添加到窗口上。 - 使用
JFrame
来创建一个基本窗口界面,并将复选框置于窗口中央。
2. 获取复选框的状态
要获取复选框是否被选中,可以使用 isSelected()
方法,该方法返回一个布尔值来表示当前的选择状态。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class JCheckBoxStateExample {
public static void main(String[] args) {
JFrame frame = new JFrame("复选框状态示例");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCheckBox checkBox1 = new JCheckBox("选项 1");
JCheckBox checkBox2 = new JCheckBox("选项 2");
JButton button = new JButton("提交");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String message = "选项 1: " + (checkBox1.isSelected() ? "已选中" : "未选中") + "\n"
+ "选项 2: " + (checkBox2.isSelected() ? "已选中" : "未选中");
JOptionPane.showMessageDialog(frame, message);
}
});
JPanel panel = new JPanel();
panel.add(checkBox1);
panel.add(checkBox2);
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
代码解析:
- 在点击按钮时,使用
isSelected()
获取复选框的状态,并将结果显示在弹窗中。
二、单选按钮 JRadioButton
的使用
与复选框不同,JRadioButton
提供了单选功能。通常,同一组的单选按钮中,只能选择一个选项。
1. 创建 JRadioButton
创建 JRadioButton
和创建 JCheckBox
的方式类似,只需实例化 JRadioButton
类并设置标签文字。
import javax.swing.*;
import java.awt.*;
public class JRadioButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JRadioButton 示例");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建单选按钮
JRadioButton radioButton1 = new JRadioButton("选项 A");
JRadioButton radioButton2 = new JRadioButton("选项 B");
JRadioButton radioButton3 = new JRadioButton("选项 C");
// 将单选按钮添加到同一个按钮组中,保证只能选择一个
ButtonGroup group = new ButtonGroup();
group.add(radioButton1);
group.add(radioButton2);
group.add(radioButton3);
// 创建面板并添加单选按钮
JPanel panel = new JPanel();
panel.add(radioButton1);
panel.add(radioButton2);
panel.add(radioButton3);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
}
输出效果:
一个窗口展示三个单选按钮,标签分别为“选项 A”、“选项 B”、“选项 C”。
代码解析:
- 创建
JRadioButton
实例,并设置显示的标签。 - 使用
ButtonGroup
来管理单选按钮组,保证组内的按钮只能单选。
2. 获取单选按钮的状态
类似于复选框,单选按钮也可以通过 isSelected()
方法获取其状态。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class JRadioButtonStateExample {
public static void main(String[] args) {
JFrame frame = new JFrame("单选按钮状态示例");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JRadioButton radioButton1 = new JRadioButton("选项 A");
JRadioButton radioButton2 = new JRadioButton("选项 B");
JRadioButton radioButton3 = new JRadioButton("选项 C");
ButtonGroup group = new ButtonGroup();
group.add(radioButton1);
group.add(radioButton2);
group.add(radioButton3);
JButton button = new JButton("提交");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String message = "选项 A: " + (radioButton1.isSelected() ? "已选中" : "未选中") + "\n"
+ "选项 B: " + (radioButton2.isSelected() ? "已选中" : "未选中") + "\n"
+ "选项 C: " + (radioButton3.isSelected() ? "已选中" : "未选中");
JOptionPane.showMessageDialog(frame, message);
}
});
JPanel panel = new JPanel();
panel.add(radioButton1);
panel.add(radioButton2);
panel.add(radioButton3);
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
代码解析:
- 当点击按钮时,通过
isSelected()
方法获取当前选中的单选按钮状态,并将结果显示在弹窗中。
三、复选框与单选按钮的实战案例
结合 JCheckBox
和 JRadioButton
,我们可以创建一个简单的用户偏好选择界面,允许用户多选兴趣爱好,同时在性别选择中只能选择一个。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CheckBoxRadioButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("用户偏好选择");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 兴趣爱好复选框
JCheckBox checkBox1 = new JCheckBox("编程");
JCheckBox checkBox2 = new JCheckBox("读书");
JCheckBox checkBox3 = new JCheckBox("运动");
// 性别单选按钮
JRadioButton radioButtonMale = new JRadioButton("男");
JRadioButton radioButtonFemale = new JRadioButton("女");
ButtonGroup genderGroup = new ButtonGroup();
genderGroup.add(radioButtonMale);
genderGroup.add(radioButtonFemale);
JButton submitButton = new JButton("提交");
// 点击按钮获取用户选择
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String hobbies = "兴趣爱好: " + (checkBox1.isSelected() ? "编程 " : "")
+ (checkBox2.isSelected() ? "读书 " : "")
+ (checkBox3.isSelected() ? "运动 " : "");
String gender = "性别: " + (radioButtonMale.isSelected() ? "男" : (radioButtonFemale.isSelected() ? "女" : "未选择"));
JOptionPane.showMessageDialog(frame, hobbies + "\n" + gender);
}
});
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5, 1));
panel.add
(checkBox1);
panel.add(checkBox2);
panel.add(checkBox3);
panel.add(radioButtonMale);
panel.add(radioButtonFemale);
panel.add(submitButton);
frame.add(panel);
frame.setVisible(true);
}
}
代码解析:
- 此示例展示了复选框和单选按钮的结合应用,允许用户选择多个兴趣爱好,同时只能选择一个性别。
结论
通过本篇文章的学习,你已经掌握了如何使用 JCheckBox
和 JRadioButton
来创建多选和单选功能。在实际项目中,这两个组件经常用于表单设计、用户设置等场景。希望这些丰富的代码示例能够帮助你更好地理解和运用这两个组件,提升你的 Java GUI 编程技能!