DOC-03-04 单选按钮(Radio Button)

这一章主要讨论单选按钮控件及其实现类RadioButtonRadioButtonToggleButton的一个特殊实现。

一个Radio Button可以被选中或者取消选中。典型的用法是将多个Radio Button放在一个组中,同一时间内其中只有一个Button可以被选中。这正是Radio Button区别于Toggle Button(开关按钮) 的行为,因为一个组中的所有Toggle Button可以同时全都取消选中。

4-1显示了三个RadioButton样例的截图,其中三个Radio Button被添加到了一个组中。

4-1 RadioButton样例

3-4-1 radio-buttons

阅读下面的章节来学习如何在你的应用程序中实现Radio Button

创建一个Radio Button

RadioButton类位于JavaFX SDK javafx.scene.control 包中,它提供了两个构造方法来创建其实例。例4-1展示了两个RadioButtonrb1是由无参构造方法创建。这个Radio Button 的文字说明(text
caption)
是通过setText方法设置的。rb2的文字说明则是通过对应的构造方法定义的。

4-1 创建Radio Button

你可以通过调用setSelected方法并指定参数值为true来明确选中一个Radio Button。如果你需要检查某个Radio Button是否被用户选中,可以使用isSelected方法。

因为RadioButton类是Labeled类的一个扩展,所以你不仅可以指定文字描述,还可以指定一个图像。你可以使用setGraphic方法来指定一个图像。例4-2展示了如何在你的应用程序中实现一个带图像的Radio Button

4-2 创建一个带图像的Radio Button

添加Radio ButtonGroup

Radio Button通常用于呈现一个组中几个相互排斥的选项。ToggleGroup 对象提供与之关联的Radio Button的引用并管理它们,使得同时只有一个Radio Button能被选中。例4-3 创建了一个Toggle Group,和三个Radio Button,将所有Radio Button都添加到了Toggle Group中,并且指定了哪个Radio Button在程序启动时会被选中。

4-3 创建一组Radio Button

当这些Radio Button通过容器布局展现并添加到应用程序中后,运行效果如图4-2所示。

4-2 三个Three Radio Button组合在一个组中

3-4-2 radio-buttons-group

处理Radio Button事件

通常,在组中的某个Radio Button被选中时,应用程序会执行一个动作。查看例4-4来学习如何根据某个Radio Button的选中来更换图标。

4-4 处理Radio Button动作

 

用户数据(User Data)被指定给了每个Radio ButtonChangeListener<Toggle>对象会检测Group中被选中的开关按钮。然后使用GroupgetSelectedToggle方法得到当前选中的Radio Button,并通过调用getUserData方法提取User Data。然后User Data被用来构造成一个图像文件名来加载图像。

例如,当rb3被选中时,getSelectedToggle方法会返回rb3的引用,而getUserData方法会返回“Contacts”。因此getResourceAsStream 方法会收到值为“Contacts.jpg” 的字符串作为参数。运行应用程序效果如图4-1

Radio Button请求焦点

在一组Radio Button中,默认情况下第一个Radio Button会最先获得焦点。如果你在第二个Radio Button上调用setSelected方法,其预期结果如图4-3所示。

4-3 默认焦点设置

3-4-3 radio-button-focus1

在图中第二个Radio Button被选中了,但第一个Radio Button依然保持着焦点。你可以使用requestFocus方法来更改焦点,见例4-5

4-5 为第二个Radio Button请求焦点

代码生效后的运行效果如图4-4

4-4 为选中的Radio Button 设置焦点

3-4-4 radio-button-focus2

相关的API文档

    · RadioButton

    · Labeled

    · ToggleGroup

 

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/04/doc03_radiobutton/
百度已收录