如何在 JavaFX 中为单选按钮设置操作?
javafxobject oriented programmingprogramming更新于 2025/6/26 7:37:17
单选按钮是一种圆形按钮。它有两种状态:选中和取消选中。通常,单选按钮使用切换组进行分组,您只能选择其中一个。
您可以通过实例化 javafx.scene.control.RadioButton 类(该类是 ToggleButton 类的子类)来在 JavaFX 中创建单选按钮。每当单选按钮被按下或释放时,都会生成操作。您可以使用 setToggleGroup() 方法将单选按钮设置为某个组。
为单选按钮 − 设置操作
RadioButton 类的 selected 属性指定当前复选框是否被选中。如果选中,则其值为 true;如果未选中,则为 false。
selectedProperty() 方法返回一个布尔属性,指示当前复选框是否被选中。如果您想在复选框被选中时执行某些操作,您可以为此属性添加一个监听器,如下所示 −
checkBox2.selectedProperty().addListener( //. . . . . );
示例
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; import javafx.geometry.Orientation; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.RadioButton; import javafx.scene.control.Slider; import javafx.scene.control.ToggleGroup; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class RadioButton_Action extends Application { public void start(Stage stage) { //创建按钮 Button button = new Button("Hi";); button.setPrefSize(40, 40); //创建滑块以调整按钮大小 Slider slider = new Slider(40, 200, 40); //将其方向设置为水平 slider.setPrefHeight(180); slider.setOrientation(Orientation.VERTICAL); slider.setShowTickLabels(true); slider.setShowTickMarks(true); slider.setMajorTickUnit(40); slider.setBlockIncrement(20); slider.valueProperty().addListener(new ChangeListener<Number>() { public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){ button.setPrefSize((double)newValue, (double)newValue); } }); RadioButton prevent = new RadioButton(); RadioButton reset = new RadioButton(); ToggleGroup group = new ToggleGroup(); prevent.setToggleGroup(group); reset.setToggleGroup(group); prevent.selectedProperty().addListener( (ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) ->{ button.setMinWidth(40); button.setPrefWidth(40); button.setMaxWidth(40); button.setMinHeight(40); button.setMaxHeight(40); button.setPrefHeight(40); }); reset.selectedProperty().addListener( ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> { button.setPrefHeight(40); button.setPrefWidth(40); button.setMinWidth(Button.USE_PREF_SIZE); button.setMaxWidth(Button.USE_PREF_SIZE); button.setMinHeight(Button.USE_PREF_SIZE); button.setMaxHeight(Button.USE_PREF_SIZE); }); //创建窗格 BorderPane pane = new BorderPane(); pane.setCenter(button); pane.setRight(new HBox(new Label("Prevent Reize";), prevent, new Label("Allow Resize";), reset)); pane.setLeft(new VBox(new Label("Button Reize";), slider)); pane.setPadding(new Insets(10, 10, 10, 10)); //准备场景 Scene scene = new Scene(pane, 595, 250); stage.setTitle("JavaFX Example"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }