翻译自 Radio Button
本章讨论单选按钮控件和RadioButton
类,该类的一个专门实现ToggleButton
。
可以选择或取消选择单选按钮控件。通常,单选按钮组合成一个组,其中一次只能选择一个按钮。此行为将它们与切换按钮区分开来,因为组中的所有切换按钮都可以处于取消选择状态。
图4-1显示了RadioButton
样本的三个屏幕截图,其中三个单选按钮添加到一个组中。
图4-1 RadioButton示例
请阅读以下段落,以了解有关如何在应用程序中实现单选按钮的更多信息。
创建单选按钮
JavaFX SDK包中提供的RadioButton
类提供javafx.scene.control
了两个构造函数,您可以使用它们创建单选按钮。例4-1显示了两个单选按钮。没有参数的构造函数用于创建rb1。此单选按钮的文本标题是使用该setText
方法设置的。rb2的文本标题在相应的构造函数中定义。
例4-1创建单选按钮
//A radio button with an empty string for its label
RadioButton rb1 = new RadioButton();
//Setting a text label
rb1.setText("Home");
//A radio button with the specified label
RadioButton rb2 = new RadioButton("Calendar");
您可以使用该setSelected
方法显式选择一个单选按钮,并将其值指定为true
。如果需要检查用户是否选择了特定的单选按钮,请应用该isSelected
方法。
由于RadioButton
该类是类的扩展,因此Labeled
您不仅可以指定文本标题,还可以指定图像。使用该setGraphic
方法指定图像。示例4-2演示了如何在应用程序中实现图形单选按钮。
示例4-2创建图形单选按钮
Image image = new Image(getClass().getResourceAsStream("ok.jpg"));
RadioButton rb = new RadioButton("Agree");
rb.setGraphic(new ImageView(image));
向组添加单选按钮
单选按钮通常用于组中以呈现多个互斥选项。该ToggleGroup
对象提供对与其关联的所有单选按钮的引用并对其进行管理,以便一次只能选择一个单选按钮。例4-3创建一个切换组,创建三个单选按钮,将每个单选按钮添加到切换组,并指定应用程序启动时应选择哪个按钮。
示例4-3创建一组单选按钮
final ToggleGroup group = new ToggleGroup();RadioButton rb1 = new RadioButton("Home");
rb1.setToggleGroup(group);
rb1.setSelected(true);RadioButton rb2 = new RadioButton("Calendar");
rb2.setToggleGroup(group);RadioButton rb3 = new RadioButton("Contacts");
rb3.setToggleGroup(group);
当使用布局容器布置这些单选按钮并将其添加到应用程序的内容时,输出应类似于图4-2。
图4-2组合中的三个单选按钮
处理单选按钮的事件
通常,应用程序在选择组中的某个单选按钮时执行操作。查看示例4-4中的代码片段,了解如何根据选择的单选按钮更改图标。
示例4-4单选按钮的处理操作
ImageView image = new ImageView();rb1.setUserData("Home")
rb2.setUserData("Calendar");
rb3.setUserData("Contacts");final ToggleGroup group = new ToggleGroup();
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){public void changed(ObservableValue<? extends Toggle> ov,Toggle old_toggle, Toggle new_toggle) {if (group.getSelectedToggle() != null) {final Image image = new Image(getClass().getResourceAsStream(group.getSelectedToggle().getUserData().toString() + ".jpg"));icon.setImage(image);} }
});
为每个单选按钮分配了用户数据。该ChangeListener<Toggle>
对象检查组中的选定切换。它使用该getSelectedToggle
方法来识别当前选择的单选按钮,并通过调用该getUserData
方法来提取其用户数据。然后应用用户数据来构造要加载的图像文件名。
例如,当选择rb3时,该getSelectedToggle
方法返回“rb3”,该getUserData
方法返回“Contacts”。因此,该getResourceAsStream
方法接收值“Contacts.jpg”。应用程序输出如图4-1所示。
请求聚焦单选按钮
在单选按钮组中,默认情况下第一个按钮最初具有焦点。如果将该setSelected
方法应用于组中的第二个单选按钮,则应该会得到如图4-3所示的结果。
图4-3默认焦点设置
选择第二个单选按钮,第一个按钮保持对焦。使用该requestFocus
功能更改焦点,如例4-5所示。
例4-5请求第二个单选按钮的焦点
rb2.setSelected(true);
rb2.requestFocus();
应用时,此代码生成如图4-4所示的结果。
图4-4设置所选单选按钮的焦点
相关的API文档
-
RadioButton
-
Labeled
-
ToggleGroup