JavaFX |带有示例的 RadioButton
RadioButtons 是 JavaFx 包的一部分。 RadioButtons 主要用于创建一系列项目,其中只能选择一个。当单选按钮被按下并释放时,会发送一个动作事件,这个动作事件可以使用事件处理程序来处理。
可以将 RadioButton 添加到 Toggle Group 以便用户不能选择多个项目。默认情况下,单选按钮不属于任何切换组。可以使用 getSelectedToggle()函数找到切换组的选定项。
RadioButton 类的构造函数:
- RadioButton() :创建一个带有空字符串作为其标签的单选按钮。
- RadioButton(String t) :创建一个以指定文本为标签的单选按钮
常用方法:
method | explanation |
---|---|
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 extends Toggle> 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