翻译自   Checkbox

本章教授如何向JavaFX应用程序添加复选框。

虽然复选框看起来类似于单选按钮,但它们不能组合到切换组中以便一次选择多个选项。有关详细信息,请参阅单选按钮和切换按钮章节。

图6-1显示了一个应用程序的屏幕截图,其中三个复选框用于启用或禁用应用程序工具栏中的图标。

图6-1复选框示例

创建复选框

例6-1创建了两个简单的复选框。

示例6-1创建复选框

//A checkbox without a caption
CheckBox cb1 = new CheckBox();
//A checkbox with a string caption
CheckBox cb2 = new CheckBox("Second");cb1.setText("First");
cb1.setSelected(true);

创建复选框后,可以使用JavaFX API提供的方法对其进行修改。在示例6-1中,该setText方法定义了c1复选框的文本标题。该setSelected方法设置为true在启动应用程序时选择cb1复选框。

定义一个国家

复选框可以是已定义的,也可以是未定义的。定义后,您可以选择或取消选择它。但是,如果未定义复选框,则无法选择或取消选中该复选框。使用类的setSelectedsetIndeterminate方法的组合CheckBox来指定复选框的状态。表6-1显示了基于其属性INDETERMINATE和复选框的复选框的三种状态SELECTED

表6-1复选框的状态

属性值 复选框外观

INDETERMINATE = false

SELECTED = false

INDETERMINATE =false

SELECTED = true

INDETERMINATE = true

SELECTED = true/false

当应用程序中的复选框表示可处于混合状态的UI元素时,您可能需要为应用程序中的复选框启用三种状态,例如“是”,“否”,“不适用”。对象的allowIndeterminate属性CheckBox确定复选框是否应循环通过所有三种状态:selected,deselected和undefined。如果变量是true,则控件将循环通过所有三个状态。如果是false,控件将循环选择和取消选择状态。下一节中描述的应用程序构造了三个复选框,并且只为它们启用两个状态。

设置行为

示例6-2中的代码片段创建了三个复选框,这样,如果选中了复选框,则相应的图标将显示在工具栏中。

示例6-2设置复选框的行为

final String[] names = new String[]{"Security", "Project", "Chart"};
final Image[] images = new Image[names.length];
final ImageView[] icons = new ImageView[names.length];
final CheckBox[] cbs = new CheckBox[names.length];for (int i = 0; i < names.length; i++) {final Image image = images[i] =new Image(getClass().getResourceAsStream(names[i] + ".png"));final ImageView icon = icons[i] = new ImageView();final CheckBox cb = cbs[i] = new CheckBox(names[i]);cb.selectedProperty().addListener(new ChangeListener<Boolean>() {public void changed(ObservableValue<? extends Boolean> ov,Boolean old_val, Boolean new_val) {icon.setImage(new_val ? image : null);}});
}

names数组使用for循环创建一个复选框数组和相应的图标数组。例如,第一个复选框cbs [0]被分配了“安全”文本标题。同时,getResourceStream当创建第一个图标的图像时,image [0]接收“Security.png”作为该方法的文件名。如果选择了特定复选框,则会将相应的图像分配给图标。如果取消选中复选框,则图标将接收null图像,并且不会呈现图标。

图6-2显示了选择Security和Chart复选框并取消选中Project复选框时的应用程序。

图6-2 Checkbox应用程序的运行情况

设置复选框的样式

图6-2中的复选框具有类的默认外观CheckBox。您可以使用该setStyle方法更改复选框的外观,如例6-3所示。

示例6-3为复选框设置样式

cb1.setStyle("-fx-border-color: lightblue; "+ "-fx-font-size: 20;"+ "-fx-border-insets: -5; "+ "-fx-border-radius: 5;"+ "-fx-border-style: dotted;"+ "-fx-border-width: 2;"
);

新样式包括一个点缀浅蓝色边框和增加其文本标题的字体大小。图6-3显示了应用此样式的cb1复选框。

图6-3样式复选框

要为应用程序中的所有复选框设置特定样式,请使用以下过程:

  • 创建.css文件。

  • checkbox在.css文件中创建CSS类。

  • 定义checkboxCSS类中的所有必需样式。

  • 在JavaFX应用程序中,使用该setStyleClass方法启用样式表。

相关的API文档  

  • CheckBox

  • JavaFX CSS规范

JavaFX UI控件教程(七)之Checkbox相关推荐

  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控件教程(二十八)之UI控件的自定义

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

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

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

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

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

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

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

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

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

  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. 干货!Java 学习路线指南,看这文就够了!
  2. [转载] 淘宝旺铺扶植版如何添加背景音乐
  3. Java的三种代理模式简述
  4. 你一定不知道的 Linux 使用技巧
  5. python函数分为_python 函数
  6. SAP One Order redesign里的WebUI advanced search重构
  7. Chapter 3: 常用SQL * PLUS命令
  8. 经典公司小型局域网服务器架设方案
  9. fudanNLP-使用
  10. 人脸识别打卡机怎么调sj_人脸通怎么使用_人脸通考勤机怎么设置
  11. 优锘科技:物联森友会发布助物联网企业加速成长
  12. html5锚点平滑,使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置...
  13. 数数字(找规律+模拟)
  14. 视觉数据集是基于物体和风景标记的巨大的图像库
  15. leetcode-377:组合总和 Ⅳ
  16. 复旦大学2018--2019学年第二学期高等代数II期末考试情况分析
  17. 动态规划典型题之——矩阵链乘法
  18. kafka学习武林秘籍
  19. pandas使用goupby函数和nunique函数计算每个分组对应的多个变量的独特值的个数( unique values of each group in dataframe)
  20. 论文解读|存储集中化对多地点报童问题中预期成本的影响

热门文章

  1. 背包(二维数组版和一维数组版)
  2. map容器的使用 逆序遍历map容器当中的数据
  3. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之上——原理与设计
  4. 高等数学上-赵立军-北京大学出版社-题解-练习5.7
  5. vscode python 自动补全_利用CodeBERT,这个VS Code扩展可以自动生成Python文档字符串...
  6. java程序员选择多个offer时需要看重哪些?_对不起,我们公司不要本科以下的大学生,学历对于程序员重不重要...
  7. HDU 6833 A Very Easy Math Problem
  8. 数列分块入门 (1 ~ 7)
  9. UVA11525 Permutation 逆康托展开
  10. P1131 [ZJOI2007] 时态同步