JavaFX单选按钮选中事件是指当用户点击单选按钮时,会触发一个事件,这个事件可以被应用程序处理。在JavaFX中,可以使用RadioButton类来创建单选按钮。
要处理单选按钮的选中事件,可以使用RadioButton类的setOnAction()方法。该方法接受一个EventHandler对象作为参数,该对象将在单选按钮被选中时被调用。例如:
RadioButton rb = new RadioButton("Option 1"); rb.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Option 1 selected"); } });
上面的代码创建了一个名为“Option 1”的单选按钮,并将一个匿名内部类作为其onAction()方法的参数。当用户点击该单选按钮时,将打印“Option 1 selected”字样。
此外,还可以使用ToggleGroup类来创建一组相关的单选按钮。ToggleGroup对象本质上是一个容器(Container),它包含一系列相关的Toggle对象(例如RadioButton对象)。当用户在ToggleGroup中的任何一个Toggle上进行切换时(例如在RadioButton上进行切换时)都会引发SelectionModelChanged事件。
ToggleGroup group = new ToggleGroup(); RadioButton rb1 = new RadioButton("Option 1"); rb1.setToggleGroup(group); RadioButton rb2 = new RadioButton("Option 2"); rb2.setToggleGroup(group); group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){ @Override public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) { if (group.getSelectedToggle() != null) { System.out.println("Selected: " + group.getSelectedToggle().getUserData().toString()); } } });
上面的代码创建了一个名为group的ToggleGroup对象并添加了2个RadioButton对象rb1和rb2。然后将ChangeListener注册到selectedToggleProperty()上。当用户在rb1或rb2上进行切换时就会打印出相应的信息。
单选按钮通常组合在一起以允许用户进行单选,即用户只能在单选按钮列表中选择一个项目。例如,当选择鞋子尺寸时,我们通常从列表中选择一个尺寸。
选择或取消选择单选按钮。
以下代码显示,当放置在ToggleGroup中时,只能选择一个RadioButton。
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.RadioButton; import javafx.scene.control.ToggleGroup; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { HBox root = new HBox(); Scene scene = new Scene(root, 300, 150); stage.setScene(scene); stage.setTitle(""); ToggleGroup group = new ToggleGroup(); RadioButton button1 = new RadioButton("select first"); button1.setToggleGroup(group); button1.setSelected(true); RadioButton button2 = new RadioButton("select second"); button2.setToggleGroup(group); root.getChildren().add(button1); root.getChildren().add(button2); scene.setRoot(root); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
javafx.scene.control包中的RadioButton类有两个构造函数。
要为其标签创建一个带有空字符串的单选按钮,然后再设置标签。
RadioButton rb = new RadioButton(); //setting a text label rb.setText("Size 9");
要创建具有指定标签的单选按钮
RadioButton rb2 = new RadioButton("Size 9");
带有true参数的setSelected()方法可以显式选择单选按钮。
isSelected
方法返回用户是否选择了特定单选按钮。
setGraphic
方法可以为RadioButton安装一个图像。
Image image = new Image(getClass().getResourceAsStream("Size.jpg")); RadioButton rb = new RadioButton("Size 9"); rb.setGraphic(new ImageView(image));
单选按钮通常用在组中。
我们可以添加单选按钮到ToggleGroup
对象,它将管理它们,使得一次只能选择一个单选按钮。
下面的代码创建一个切换组和三个单选按钮,然后将每个单选按钮添加到切换组,并指定应该选择哪个按钮。
ToggleGroup group = new ToggleGroup(); RadioButton rb1 = new RadioButton("Size 9"); rb1.setToggleGroup(group); rb1.setSelected(true); RadioButton rb2 = new RadioButton("Size 10"); rb2.setToggleGroup(group); RadioButton rb3 = new RadioButton("Size 11"); rb3.setToggleGroup(group);
我们通过ToggleGroup处理单选按钮选择的事件。更改侦听器添加到ToggleGroup。
为每个单选按钮分配了用户数据。
ChangeListener对象检查组中的选定项目。所选单选按钮从getSelectedToggle方法返回。然后我们通过调用getUserData方法获取用户数据。
rb1.setUserData("Home") rb2.setUserData("Calendar"); rb3.setUserData("Contacts"); final ToggleGroup group = new ToggleGroup(); group.selectedToggleProperty().addListener( (ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) -> { if (group.getSelectedToggle() != null) { System.out.println(group.getSelectedToggle().getUserData().toString()); } } });
完整的源代码。
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.RadioButton; import javafx.scene.control.Toggle; import javafx.scene.control.ToggleGroup; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { Scene scene = new Scene(new Group()); stage.setWidth(250); stage.setHeight(150); final ToggleGroup group = new ToggleGroup(); RadioButton rb1 = new RadioButton("A"); rb1.setToggleGroup(group); rb1.setUserData("A"); RadioButton rb2 = new RadioButton("B"); rb2.setToggleGroup(group); rb2.setUserData("B"); RadioButton rb3 = new RadioButton("C"); rb3.setToggleGroup(group); rb3.setUserData("C"); group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() { public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) { if (group.getSelectedToggle() != null) { System.out.println(group.getSelectedToggle().getUserData().toString()); } } }); HBox hbox = new HBox(); VBox vbox = new VBox(); vbox.getChildren().add(rb1); vbox.getChildren().add(rb2); vbox.getChildren().add(rb3); vbox.setSpacing(10); hbox.getChildren().add(vbox); hbox.setSpacing(50); hbox.setPadding(new Insets(20, 10, 10, 20)); ((Group) scene.getRoot()).getChildren().add(hbox); stage.setScene(scene); stage.show(); } }
上面的代码生成以下结果。
在单选按钮组中,默认情况下第一个按钮最初具有焦点。
当使用setSelected
方法选择单选按钮时,我们还应该使用requestFocus函数将焦点更改为所选单选按钮。
rb.setSelected(true); rb.requestFocus();
JavaFX教程 -JavaFX密码字段PasswordField用于密码输入。用户键入的字符通过显示回显字符串被隐藏。创建密码字段以下代码使用来...
Java日期时间 -Java偏移日期时间偏移时间OffsetTime表示具有相对于UTC的固定区偏移的时间。OffsetTime组合LocalTime和ZoneOffset...
Java日期时间调整器我们可能要将日期和时间调整为该月的第一个星期一或下一个星期二。我们可以使用 TemporalAdjuster 界面来调整...
Java日期时间 -Java预定义日期时间格式预定义格式化程序在DateTimeFormatter 类中定义为常量。BASIC_ISO_DATE格式并解析日期,而...