翻译自  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

JavaFX UI控件教程(五)之Radio Button相关推荐

  1. JavaFX UI控件教程(八)之Choice Box

    翻译自   Choice Box 本章介绍了选项框,这些UI控件提供了在几个选项之间快速选择的支持. 使用ChoiceBox该类将选择框添加到JavaFX应用程序.其简单的实现如图7-1所示. 图7- ...

  2. JavaFX UI控件教程(二)之JavaFX UI控件

    翻译自  JavaFX UI控件 本章概述了通过API提供的JavaFX UI控件. JavaFX UI控件是使用场景图中的节点构建的.因此,控件可以使用JavaFX平台的视觉丰富功能.由于JavaF ...

  3. JavaFX UI控件教程(一)之简述

    翻译自  JavaFX UI控件概述 关于本教程 本教程介绍JavaFX API中提供的内置JavaFX UI控件. 该文件包含以下章节: JavaFX UI控件 标签 按钮 单选按钮 切换按钮 复选 ...

  4. JavaFX UI控件教程(十五)之Combo Box

    翻译自   Combo Box 本章介绍如何在JavaFX应用程序中使用组合框.它讨论了可编辑和不可编辑的组合框,教您如何跟踪可编辑组合框中的更改并处理它们上的事件,并解释如何使用单元工厂来更改组合框 ...

  5. JavaFX UI控件教程(二十八)之UI控件的自定义

    翻译自  Customization of UI Controls 本章介绍了UI控件自定义的各个方面,并总结了Oracle提供的一些提示和技巧,以帮助您修改UI控件的外观和行为. 您可以通过应用层叠 ...

  6. JavaFX UI控件教程(十四)之Tree View

    翻译自   Tree View 在本章中,您将学习如何在JavaFX应用程序中构建树结构,向树视图添加项,处理事件以及通过实现和应用单元工厂来自定义树单元. 包的TreeView类javafx.sce ...

  7. JavaFX UI控件教程(二十二)之Titled Pane和Accordion

    翻译自  Titled Pane and Accordion 本章介绍如何在JavaFX应用程序中使用accordion和title窗格的组合. 标题窗格是带标题的面板.它可以打开和关闭,它可以封装任 ...

  8. JavaFX UI控件教程(二十三)之Menu

    翻译自  Menu 本章介绍如何创建菜单和菜单栏,添加菜单项,将菜单分组,创建子菜单以及设置上下文菜单. 您可以使用以下JavaFX API类在JavaFX应用程序中构建菜单. 菜单栏 菜单项 菜单 ...

  9. JavaFX UI控件教程(二十一)之Tooltip

    翻译自  Tooltip 在本章中,您将了解工具提示,即当鼠标光标悬停该控件时,可以为任何UI控件设置的控件. 的Tooltip类表示通常用于显示关于所述用户接口的控制附加信息的公共UI组件.可以通过 ...

  10. JavaFX UI控件教程(二十)之HTML Editor

    翻译自  HTML Editor 在本章中,您将学习如何使用嵌入式HTML编辑器编辑JavaFX应用程序中的文本. 该HTMLEditor控件是一个功能齐全的富文本编辑器.它的实现基于HTML5的文档 ...

最新文章

  1. 九、springboot整合rabbitMQ
  2. Kubernetes容器编排的三大支柱
  3. 从字符串中删除HTML标签
  4. 清华大学 现代软件工程 结对编程项目 (一)
  5. 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
  6. 如何用TXT文档数据批量生成条形码
  7. 一次tomcat数据乱码事件
  8. OpenCV图像处理(2)——形态学操作
  9. 算法竞赛入门经典 排列
  10. 【MIKE21】批处理依次打开模型文件运行模型
  11. 抠图二重奏——人物头像
  12. 3DGIS第一章 绪 论
  13. 由计算机病毒引起的问题属于,多数情况下由计算机病毒程序引起的问题属于()故障。A.硬件B.软件C.操作D.电源...
  14. AAAI2020论文列表(中英对照)
  15. 计算机应用专业需要6g显卡吗,4G、6G、8G显卡的显存容量有什么用?来看科普
  16. tkinter可视化天气查询
  17. Nirvana NA公链 NAC公链的两面观
  18. 时间戳转日期格式 +new Date
  19. Github中Octotastic day的含义
  20. Alientek I.MX6UL Linux-第九章 I.MX6U的启动方式

热门文章

  1. 蓝桥杯-长草-代码(BFS)
  2. leetcode59. 螺旋矩阵 II
  3. java中nextLine(),读取换行符的解决
  4. [SpringBoot2]定制化原理_SpringBoot定制化组件的几种方式
  5. SpringCloud常见问题总结(二)
  6. java调优方法,jvm监控工具
  7. 滑动窗口最大值-leetcode 239题
  8. dft + fft(模板)
  9. SP1043 GSS1 - Can you answer these queries I 猫树
  10. 换根dp求树所有节点的最小深度