📜  JavaFX |带有示例的 RadioButton

📅  最后修改于: 2022-05-13 01:55:39.681000             🧑  作者: Mango

JavaFX |带有示例的 RadioButton

RadioButtons 是 JavaFx 包的一部分。 RadioButtons 主要用于创建一系列项目,其中只能选择一个。当单选按钮被按下并释放时,会发送一个动作事件,这个动作事件可以使用事件处理程序来处理。
可以将 RadioButton 添加到 Toggle Group 以便用户不能选择多个项目。默认情况下,单选按钮不属于任何切换组。可以使用 getSelectedToggle()函数找到切换组的选定项。

RadioButton 类的构造函数

  1. RadioButton() :创建一个带有空字符串作为其标签的单选按钮。
  2. RadioButton(String t) :创建一个以指定文本为标签的单选按钮

常用方法

methodexplanation
getText()returns the textLabel for radio button
isSelected()returns whether the radiobutton is selected or not
setSelected(boolean b)sets whether the radiobutton is selected or not
setToggleGroup(ToggleGroup tg)sets the toggle group for the radio button
fire()Toggles the state of the radio button if and only if the RadioButton has not already selected or is not part of a ToggleGroup.

下面的程序说明了 RadioButton 类:

  • 创建 RadioButton 并将其添加到舞台的程序:该程序创建一个由名称 r1、r2、r3 指示的 RadioButton。单选按钮将在场景内创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)内。函数setTitle() 用于为舞台提供标题。然后创建一个平铺窗格,在该平铺窗格上调用 addChildren() 方法以将单选按钮附加到场景中,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
    // Java program to create RadioButton and add it to the stage
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.collections.*;
    import javafx.stage.Stage;
    import javafx.scene.text.Text.*;
    import javafx.scene.text.*;
    public class radiobutton extends Application {
      
        // launch the application
        public void start(Stage s)
        {
            // set title for the stage
            s.setTitle("creating RadioButton");
      
            // create a tile pane
            TilePane r = new TilePane();
      
            // create a label
            Label l = new Label("This is a Radiobutton example ");
      
            // create radiobuttons
            RadioButton r1 = new RadioButton("male");
            RadioButton r2 = new RadioButton("female");
            RadioButton r3 = new RadioButton("others");
      
            // add label
            r.getChildren().add(l);
            r.getChildren().add(r1);
            r.getChildren().add(r2);
            r.getChildren().add(r3);
      
            // create a scene
            Scene sc = new Scene(r, 200, 200);
      
            // set the scene
            s.setScene(sc);
      
            s.show();
        }
      
        public static void main(String args[])
        {
            // launch the application
            launch(args);
        }
    }
    

    输出:

  • 创建 RadioButton 并将其添加到 ToggleGroup 的程序:该程序创建一个由名称 r1、r2、r3 指示的 RadioButton。单选按钮将在场景内创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)内。函数setTitle() 用于为舞台提供标题。创建一个切换组,并使用 setToggleGroup()函数将单选按钮添加到切换组。然后创建一个平铺窗格,在该平铺窗格上调用 addChildren() 方法以将单选按钮附加到场景中,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
    // Java Program to create RadioButton and add it to a ToggleGroup
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.collections.*;
    import javafx.stage.Stage;
    import javafx.scene.text.Text.*;
    import javafx.scene.text.*;
    public class radiobutton_1 extends Application {
        // labels
        Label l;
      
        // launch the application
        public void start(Stage s)
        {
            // set title for the stage
            s.setTitle("creating RadioButton");
      
            // create a tile pane
            TilePane r = new TilePane();
      
            // create a label
            l = new Label("This is a Radiobutton example ");
      
            // create a toggle group
            ToggleGroup tg = new ToggleGroup();
      
            // create radiobuttons
            RadioButton r1 = new RadioButton("male");
            RadioButton r2 = new RadioButton("female");
            RadioButton r3 = new RadioButton("others");
      
            // add radiobuttons to toggle group
            r1.setToggleGroup(tg);
            r2.setToggleGroup(tg);
            r3.setToggleGroup(tg);
      
            // add label
            r.getChildren().add(l);
            r.getChildren().add(r1);
            r.getChildren().add(r2);
            r.getChildren().add(r3);
      
            // create a scene
            Scene sc = new Scene(r, 200, 200);
      
            // set the scene
            s.setScene(sc);
      
            s.show();
        }
      
        public static void main(String args[])
        {
            // launch the application
            launch(args);
        }
    }
    

    输出:

  • 创建 RadioButton 的程序,将其添加到 ToggleGroup 并为其添加侦听器:该程序创建一个 RadioButton,由名称 r1、r2、r3 指示。单选按钮将在场景内创建,而场景又将托管在舞台(这是顶级 JavaFX 容器)内。函数setTitle() 用于为舞台提供标题。创建一个切换组,并使用 setToggleGroup()函数将单选按钮添加到切换组。创建标签 l2 以显示选择了哪个单选按钮。添加了一个更改侦听器来处理单选按钮选择中的任何更改(使用 addListener()函数)。通过更改标签 l2 的文本来描述选择的变化。然后创建一个平铺窗格,在该平铺窗格上调用 addChildren() 方法以将单选按钮附加到场景中,以及代码中 (200, 200) 指定的分辨率。最后调用 show() 方法显示最终结果。
    // Java Program to create RadioButton, add it to a ToggleGroup and add a listener to it
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.*;
    import javafx.event.ActionEvent;
    import javafx.event.*;
    import javafx.collections.*;
    import javafx.stage.Stage;
    import javafx.scene.text.Text.*;
    import javafx.scene.text.*;
    import javafx.beans.value.*;
    public class radiobutton_2 extends Application {
      
        // launch the application
        public void start(Stage s)
        {
            // set title for the stage
            s.setTitle("creating RadioButton");
      
            // create a tile pane
            TilePane r = new TilePane();
      
            // create a label
            Label l = new Label("This is a Radiobutton example ");
            Label l2 = new Label("nothing selected");
      
            // create a toggle group
            ToggleGroup tg = new ToggleGroup();
      
            // create radiobuttons
            RadioButton r1 = new RadioButton("male");
            RadioButton r2 = new RadioButton("female");
            RadioButton r3 = new RadioButton("others");
      
            // add radiobuttons to toggle group
            r1.setToggleGroup(tg);
            r2.setToggleGroup(tg);
            r3.setToggleGroup(tg);
      
            // add label
            r.getChildren().add(l);
            r.getChildren().add(r1);
            r.getChildren().add(r2);
            r.getChildren().add(r3);
            r.getChildren().add(l2);
      
            // create a scene
            Scene sc = new Scene(r, 200, 200);
      
            // add a change listener
            tg.selectedToggleProperty().addListener(new ChangeListener() 
            {
                public void changed(ObservableValue ob, 
                                                        Toggle o, Toggle n)
                {
      
                    RadioButton rb = (RadioButton)tg.getSelectedToggle();
      
                    if (rb != null) {
                        String s = rb.getText();
      
                        // change the label
                        l2.setText(s + " selected");
                    }
                }
            });
      
            // set the scene
            s.setScene(sc);
      
            s.show();
        }
      
        public static void main(String args[])
        {
            // launch the application
            launch(args);
        }
    }
    

    输出:

    注意:以上程序不能在在线 IDE 中运行,请使用离线编译器
    参考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/RadioButton.html