翻译自   Toggle Button

在本章中,您将了解ToggleButton该类,这是通过JavaFX API提供的另一种类型的按钮。

可以将两个或多个切换按钮组合成一个组,其中一次只能选择一个按钮,或者不需要选择。图5-1是组合了三个切换按钮的应用程序的截屏。应用程序根据选择的切换按钮绘制具有特定颜色的矩形。

5-1三个切换按钮

创建切换按钮

您可以使用ToggleButton该类的三个构造函数中的任何一个在应用程序中创建一个切换按钮,如例5-1所示。

示例5-1创建切换按钮

//A toggle button without any caption or icon
ToggleButton tb1 = new ToggleButton();
//A toggle button with a text caption
ToggleButton tb2 = new ToggleButton("Press me");
//A toggle button with a text caption and an icon
Image image = new Image(getClass().getResourceAsStream("icon.png"));
ToggleButton tb3 = new ToggleButton ("Press me", new ImageView(image));

ToggleButton班是的扩展Labeled类,因此你可以指定一个文本标题,图像,或两者图片和文字。您可以使用类的setTextsetGraphic方法Labeled为切换按钮指定文本和图形内容。

在代码中定义了切换按钮后,可以将它们组合在一个组中并设置特定的行为。

将切换按钮添加到组

在实施ToggleButton类是非常相似的实现RadioButton类。但是,与单选按钮不同,切换组中的切换按钮不会尝试强制选择组中的至少一个按钮。也就是说,单击所选的切换按钮会使其取消选中,单击组中所选的单选按钮无效。

花点时间研究代码片段例5-2。

示例5-2组合组中的切换按钮

final ToggleGroup group = new ToggleGroup();ToggleButton tb1 = new ToggleButton("Minor");
tb1.setToggleGroup(group);
tb1.setSelected(true);ToggleButton tb2 = new ToggleButton("Major");
tb2.setToggleGroup(group);ToggleButton tb3 = new ToggleButton("Critical");
tb3.setToggleGroup(group);

例5-2创建了三个切换按钮并将它们添加到切换组。setSelected为tb1切换按钮调用该方法,以便在应用程序启动时选择该方法。但是,您可以取消选择“轻微”切换按钮,以便在启动时不在组中选择切换按钮,如图5-2所示。

图5-2组中的三个切换按钮

通常,您使用一组切换按钮为每个按钮指定特定行为。下一节将介绍如何使用这些切换按钮来更改矩形的颜色。

设置行为

该类从类setUserData继承的方法可帮助您将任何选定的选项与特定值相关联。在示例5-3中,用户数据指示应使用哪种颜色来绘制矩形。ToggleButtonNode

示例5-3设置切换按钮的用户数据

tb1.setUserData(Color.LIGHTGREEN);
tb2.setUserData(Color.LIGHTBLUE);
tb3.setUserData(Color.SALMON);final Rectangle rect = new Rectangle(145, 50);final ToggleGroup group = new ToggleGroup();
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){public void changed(ObservableValue<? extends Toggle> ov,Toggle toggle, Toggle new_toggle) {if (new_toggle == null)rect.setFill(Color.WHITE);elserect.setFill((Color) group.getSelectedToggle().getUserData());}
});

ChangeListener<Toggle>对象检查组中的选定切换。如果未选择任何切换按钮,则矩形将涂上白色。如果选择了其中一个切换按钮,则连续调用getSelectedTogglegetUserData方法将返回一种颜色以绘制矩形。

例如,如果用户选择tb2切换按钮,则setSelectedToggle().getUserData()呼叫返回Color.LIGHTBLUE。结果如图5-3所示。

图5-3使用切换按钮绘制矩形

请参阅ToggleButtonSample.java文件以检查应用程序的完整代码。

造型切换按钮

您可以通过将CSS样式应用于切换按钮来增强此应用程序。在JavaFX 2应用程序中使用CSS类似于在HTML中使用CSS,因为每种情况都基于相同的CSS规范。示例5-4使用该setStyle方法更改-fx-base切换按钮的CSS属性。

示例5-4将CSS样式应用于切换按钮

tb1.setStyle("-fx-base: lightgreen;");
tb2.setStyle("-fx-base: lightblue;");
tb3.setStyle("-fx-base: salmon;");

当添加到应用程序代码中时,这些行会更改切换按钮的可视外观,如图5-4所示。

图5-4绘制的切换按钮

您可能希望尝试ToggleButton该类的其他CSS属性,或应用JavaFX API中提供的动画,转换和视觉效果。

相关的API文档  

  • ToggleButton

  • ToggleGroup

JavaFX UI控件教程(六)之Toggle Button相关推荐

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

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

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

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

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

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

  4. JavaFX UI控件教程(十六)之Separator

    翻译自  Separator 本章介绍如何使用分隔符组织JavaFX应用程序的UI组件. SeparatorJavaFX API中可用的类表示水平或垂直分隔线.它用于划分应用程序用户界面的元素,不会产 ...

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

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

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

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

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

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

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

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

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

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

  10. JavaFX UI控件教程(十八)之Progress Bar和Progress Indicator

    翻译自  Progress Bar and Progress Indicator 在本章中,您将了解进度指示器和进度条,以及可视化JavaFX应用程序中任何操作进度的UI控件. 本ProgressIn ...

最新文章

  1. 网易MySQL中间件的负载均衡策略及性能优化
  2. ASP.NET中App_Code,App_Data等文件夹的作用转
  3. 2019知道c语言答案,2019年全国计算机二级C语言练习及答案四
  4. slider节点透明背景_【Cocos Creator 实战教程(1)】——人机对战五子棋(节点事件相关)...
  5. 确定活动的热点垃圾收集器
  6. 信贷常用风控报表(二)
  7. shell 备份并删除几日内的历史文件
  8. 【.net core 跨平台】第一步 在Ubuntu16.04 配置.net core环境
  9. 用QT制作一个抽奖器的总结
  10. LabVIEW与Microsoft Windows的兼容性
  11. Qt6 tesseract-ocr 截图识字
  12. IP摄像头实现远程目标检测(rtsp)
  13. Genero Studio导入ds.sch失败处理办法_Error importing schema file:Check Ouput view for datails. mod-db3[11003]
  14. 来给罗永浩和王自如打个分
  15. 查找计算机硬件和软件的翻译工具,计算机软件和硬件,PC computer software and hardware,音标,读音,翻译,英文例句,英语词典...
  16. 了解Wi-fi频段概念
  17. 做seo必须要懂得的技术:黑帽seo和白帽seo的几点
  18. SSO单点登录跨域跨服务器
  19. PP模块工艺路线明细BAPI
  20. Python文本处理工具——TextRank

热门文章

  1. c语言sizeof和strlen哪个大,C语言的sizeof和strlen区别与联系
  2. mysql already closed._java.sql.SQLException: Already closed.
  3. [EDA]FPGA/CPLD 设计流程步骤及步骤概念
  4. sqrt()函数的注意事项
  5. C++中函数调用时的三种参数传递方式(x,*x,x)
  6. matlab中图像轮廓变细,Matlab中,用bwmorph函数提取二进制图像的轮廓
  7. 最大公约数,最小公倍数,质因式分解
  8. Function!(计蒜客 - 42386)
  9. P3714 [BJOI2017]树的难题(点分治/线段树/单调队列)
  10. CF1208D Restore Permutation