在本节中,我们将会讲解在JavaFX中,RadioButton的使用。RadioButton可以选中和取消选中,并且多个RadioButton可以放入一个Group。当然,它必须要与ToggleButton区分开来,因为在同一个Group中的ToggleButton都可以成为没有选中的状态,而RadioButton则不行。
创建RadioButton
//包含一个空Label的RadioButton
RadioButton rb1 = new RadioButton();
//设置文本内容
rb1.setText("Home");
//包含指定文本内容的RadioButton
RadioButton rb2 = new RadioButton("Calendar");
对于RadioButton,我们可以使用setSelected来使它选中。通过isSelected方法来判断它是否被选中。
另外,由于RadioButton继承与javafx.scene.control.Labeled,所以其实RadioButton不仅仅可以指定文本,也可以指定图片。
Image image = new Image(getClass().getResourceAsStream("ok.jpg"));
RadioButton rb = new RadioButton("Agree");
rb.setGraphic(new ImageView(image));
将RadioButton加入Group
将RadioButton加入同一个Group,我们可以在多个选项中只允许选中一个。
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的事件
在JavaFX中,我们通过监听Property来进行事件的监听。
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);
}
});
我们通过监听Group中的选项的改变,来更改icon控件中的图片。
UserData用于存储少量的数据,便于在选中事件中根据不同的RadioButton读取不同的数据做操作。
为RadioButton聚焦
在一个Group中,通常是第一个RadioButton默认获取焦点,即便你将第二个RadioButton设置为选中,也只能得到下面这个结果:
这样,我们需要通过requestFocus()来请求焦点。
rb2.setSelected(true);
rb2.requestFocus();
可以得到如下结果:
文章评论