📜  JavaFX |带有示例的 RadioButton(1)

📅  最后修改于: 2023-12-03 14:42:22.458000             🧑  作者: Mango

JavaFX | 带有示例的 RadioButton

介绍

在JavaFX中,RadioButton是一种可以被选择或取消选择的单选钮。它们通常用于组织选项列表,并要求用户只能选择其中一个选项。本文将介绍如何在JavaFX中使用RadioButton,并提供一个示例以帮助你更好地了解它们的用法。

使用RadioButton
创建RadioButton

可以通过以下代码创建RadioButton:

RadioButton radioButton = new RadioButton("Example");

其中,"Example"是你要显示在选项旁边的文本。你可以将其替换为你想要的任何文本。

添加到组中

一般来说,使用RadioButton时,需要将其添加到同一组中,以便在用户选择时能够相互排除。在JavaFX中,可以通过ToggleGroup类实现这一点。可以通过以下代码创建一个ToggleGroup:

ToggleGroup toggleGroup = new ToggleGroup();

然后,将RadioButton添加到ToggleGroup中:

radioButton.setToggleGroup(toggleGroup);

这将使RadioButton变为ToggleGroup的一部分。在任何时候,只有组中的单个选项可以被选择。

监听状态更改

当用户选择或取消选择单选钮时,可能需要响应状态更改。以下代码演示如何添加一个状态更改监听器:

radioButton.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
    if (newValue) {
        System.out.println("RadioButton \"" + radioButton.getText() + "\" selected");
    } else {
        System.out.println("RadioButton \"" + radioButton.getText() + "\" deselected");
    }
});

在此示例中,当状态更改时,将显示一个简单的消息,指示哪个RadioButton被选择或取消选择。你可以将这些消息替换为任何操作,以响应状态更改。

示例

以下代码显示了如何在JavaFX中使用RadioButton:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class RadioButtonExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        RadioButton radioButton1 = new RadioButton("Option 1");
        RadioButton radioButton2 = new RadioButton("Option 2");
        RadioButton radioButton3 = new RadioButton("Option 3");
        
        ToggleGroup toggleGroup = new ToggleGroup();
        radioButton1.setToggleGroup(toggleGroup);
        radioButton2.setToggleGroup(toggleGroup);
        radioButton3.setToggleGroup(toggleGroup);
        
        VBox vbox = new VBox(10);
        vbox.setAlignment(Pos.CENTER_LEFT);
        vbox.setPadding(new Insets(10, 10, 10, 10));
        vbox.getChildren().addAll(new Label("Options:"), radioButton1, radioButton2, radioButton3);
        
        radioButton1.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
            if (newValue) {
                System.out.println("RadioButton \"" + radioButton1.getText() + "\" selected");
            } else {
                System.out.println("RadioButton \"" + radioButton1.getText() + "\" deselected");
            }
        });
        
        radioButton2.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
            if (newValue) {
                System.out.println("RadioButton \"" + radioButton2.getText() + "\" selected");
            } else {
                System.out.println("RadioButton \"" + radioButton2.getText() + "\" deselected");
            }
        });
        
        radioButton3.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
            if (newValue) {
                System.out.println("RadioButton \"" + radioButton3.getText() + "\" selected");
            } else {
                System.out.println("RadioButton \"" + radioButton3.getText() + "\" deselected");
            }
        });
        
        Scene scene = new Scene(vbox, 300, 250);
        
        primaryStage.setTitle("RadioButton Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

在此示例中,我们创建了三个RadioButton,将它们添加到同一个ToggleGroup中,并将连带创建了一个简单的状态更改监听器,以便在用户选择时显示消息。运行该示例后,应该看到一个具有三个选项的窗体。

结论

希望本文对你理解JavaFX中RadioButton的用法有所帮助。通过使用本文中提供的示例,你可以更好地了解如何创建RadioButton,并将其添加到同一组中,以便响应用户的选择。如果有任何问题或疑问,请随时留言。