Java Swing (Swing 是最经典的 Java GUI 库)
在 Swing 中,复选框对应 JCheckBox 类。

核心方法
isSelected(): 获取复选框的选中状态,如果被选中,返回true;否则返回false。setSelected(boolean): 设置复选框的选中状态,参数为true则选中,为false则取消选中。
示例 1:创建一个简单的复选框并获取其状态
这个例子创建一个窗口,里面有一个复选框和一个按钮,点击按钮时,程序会打印出复选框当前是否被选中。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingCheckboxExample {
public static void main(String[] args) {
// 创建一个新窗口
JFrame frame = new JFrame("Swing 复选框示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 150);
frame.setLayout(new FlowLayout()); // 使用流式布局
// 1. 创建一个 JCheckBox
JCheckBox myCheckbox = new JCheckBox("同意用户协议");
// 2. 创建一个按钮,用于检查状态
JButton checkButton = new JButton("检查状态");
// 3. 为按钮添加点击事件监听器
checkButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 使用 isSelected() 方法获取复选框的选中状态
if (myCheckbox.isSelected()) {
JOptionPane.showMessageDialog(frame, "复选框已被选中!");
} else {
JOptionPane.showMessageDialog(frame, "复选框未被选中。");
}
}
});
// 4. 将组件添加到窗口中
frame.add(myCheckbox);
frame.add(checkButton);
// 显示窗口
frame.setVisible(true);
}
}
示例 2:动态设置复选框状态
这个例子展示如何通过代码来选中或取消选中复选框。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingCheckboxSetExample {
public static void main(String[] args) {
JFrame frame = new JFrame("设置复选框状态");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setLayout(new FlowLayout());
JCheckbox statusCheckbox = new JCheckbox("当前状态");
JButton selectButton = new JButton("选中");
JButton deselectButton = new JButton("取消选中");
// 选中按钮的事件
selectButton.addActionListener(e -> statusCheckbox.setSelected(true));
// 取消选中按钮的事件
deselectButton.addActionListener(e -> statusCheckbox.setSelected(false));
frame.add(statusCheckbox);
frame.add(selectButton);
frame.add(deselectButton);
frame.setVisible(true);
}
}
JavaFX (JavaFX 是现代的 Java GUI 库,推荐用于新项目)
在 JavaFX 中,复选框对应 CheckBox 类。
核心属性
selectedProperty(): 这是一个BooleanProperty,用于绑定或监听复选框的选中状态。isSelected(): 获取选中状态的便捷方法,返回boolean。setSelected(boolean): 设置选中状态的便捷方法。
示例 1:创建一个简单的复选框并获取其状态
这个例子创建一个场景,里面有一个复选框和一个按钮,点击按钮时,会弹出一个对话框显示复选框的状态。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
public class JavaFXCheckboxExample extends Application {
@Override
public void start(Stage primaryStage) {
// 1. 创建一个 CheckBox
CheckBox myCheckbox = new CheckBox("同意用户协议");
// 2. 创建一个按钮
Button checkButton = new Button("检查状态");
// 3. 为按钮添加事件处理器
checkButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// 使用 isSelected() 方法获取状态
if (myCheckbox.isSelected()) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("状态信息");
alert.setHeaderText(null);
alert.setContentText("复选框已被选中!");
alert.showAndWait();
} else {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("状态信息");
alert.setHeaderText(null);
alert.setContentText("复选框未被选中。");
alert.showAndWait();
}
}
});
// 4. 创建一个布局并将组件添加进去
VBox root = new VBox(10); // 10是间距
root.getChildren().addAll(myCheckbox, checkButton);
// 5. 创建场景并设置到舞台
Scene scene = new Scene(root, 300, 150);
primaryStage.setTitle("JavaFX 复选框示例");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
示例 2:使用属性绑定(JavaFX 的强大功能)
JavaFX 的一个核心特性是属性绑定,你可以将复选框的选中状态与另一个控件(比如按钮的禁用状态)直接绑定。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFXBindingExample extends Application {
@Override
public void start(Stage primaryStage) {
CheckBox agreeCheckbox = new CheckBox("我已阅读并同意条款");
Button submitButton = new Button("提交");
// --- 核心代码:绑定 ---
// 将提交按钮的禁用状态与复选框的选中状态绑定
// 当复选框未被选中时,按钮自动被禁用
submitButton.disableProperty().bind(agreeCheckbox.selectedProperty().not());
VBox root = new VBox(10, agreeCheckbox, submitButton);
root.setStyle("-fx-padding: 20;");
Scene scene = new Scene(root, 300, 150);
primaryStage.setTitle("JavaFX 属性绑定示例");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
总结与对比
| 特性 | Java Swing | JavaFX |
|---|---|---|
| 核心类 | JCheckBox |
CheckBox |
| 获取状态 | myCheckbox.isSelected() |
myCheckbox.isSelected() |
| 设置状态 | myCheckbox.setSelected(true) |
myCheckbox.setSelected(true) |
| 事件监听 | addActionListener |
setOnAction |
| 高级特性 | 需要手动实现联动逻辑 | 属性绑定,可以轻松实现控件间的联动,非常强大 |
| 推荐度 | 旧项目维护,学习基础GUI | 新项目首选,更现代、功能更强大 |
希望这些详细的例子能帮助你理解如何在 Java 中处理复选框的选中状态!

