javaFX学习之RadioButton的使用(转载)

创建一个Radio Button

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

 创建Radio Button

1
2
3
4
5
6
7
8
//标签为空的Radio Button
RadioButton rb1 = new RadioButton();
 
//设置标签文字
rb1.setText("Home");
 
//指定标签文字的Radio Button
RadioButton rb2 = new RadioButton("Calendar");

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

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

创建一个带图像的Radio Button

1
2
3
Image image = new Image(getClass().getResourceAsStream("ok.jpg"));
RadioButton rb = new RadioButton("Agree");
rb.setGraphic(new ImageView(image));

添加Radio Button到Group

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

创建一组Radio Button

1
2
3
4
5
6
7
8
9
10
11
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);

当这些RadioButton对象通过容器布局展现并添加到应用程序中后,运行效果如图所示

 三个 RadioButton对象组合在一个ToggleGroup组中

3-4-2 radio-buttons-group

处理Radio Button事件

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

 处理Radio Button动作事件 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ImageView image = new ImageView();
 
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) {
            final Image image = new Image(
                getClass().getResourceAsStream(
                group.getSelectedToggle().getUserData().toString() +
                ".jpg"));
        icon.setImage(image);
    }
});

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

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

为Radio Button请求焦点 

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

默认焦点设置

3-4-3 radio-button-focus1

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

 为第二个Radio Button请求焦点 

1
2
rb2.setSelected(true);
rb2.requestFocus();

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

为选中的Radio Button 设置焦点 

3-4-4 radio-button-focus2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值