JavaFX UI控件教程(七)之Checkbox_javafx checkbox-程序员宅基地

技术标签: javafx  

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/moakun/article/details/83047188

智能推荐

python-简单用户交互小程序-程序员宅基地

文章浏览阅读872次。1、第一种方式:root@kali:~/python# vim userinput.py#!/usr/bin/python#--*-- coding:utf-8 --*--Name = raw_input('please your name:\n')Age = raw_input('please your age:\n')Sex = raw_input('please

在Redhat9 Linux下安装汉化eclipse3.1.2的c/c++开发平台-程序员宅基地

文章浏览阅读6.1k次。在Redhat9 Linux下安装汉化eclipse3.1.2的c/c++开发平台By: 吴垠Date: 2006-06-09Email: [email protected]版权信息:该文章版权由Wu Yin所有。可在非商业目的下任意传播和复制。对于商业 目的下对本文的任何行为需经作者同意。联系方式:lazy_fox#msn.com1. 本文需要的资源都可

atl dll中调用wtl_dll中使用wtl开发窗口-程序员宅基地

文章浏览阅读1.6k次。环境 xp sp3,vs20031.新建 ATL-ATL项目,项目名test0507,不要选中属性化,不要选中支持 mfc,2.stdafx.h添加#include #include #include #include #include #include #include #include 3.在原有的Ctest0507Module类基础上添加Add_dll中使用wtl开发窗口

【404 笔记】总结-程序员宅基地

文章浏览阅读174次。mvc mvp mvvmhttps://juejin.cn/post/6914971761163370509https://juejin.cn/post/6846687603547176974Handler谈谈消息机制Handler作用 ?有哪些要素 ?流程是怎样的 ?负责跨线程通信,这是因为在主线程不能做耗时操作,而子线程不能更新UI,所以当子线程中进行耗时操作后需要更新UI时,通过Handler将有关UI的操作切换到主线程中执行。https://www.jianshu.com/p/70d57

ZF网络架构深度详解-程序员宅基地

文章浏览阅读1w次,点赞50次,收藏121次。前言:ZF网络是2013年提出的,网上有很多关于它的介绍和讲解,但是很多内容讲的不太好(个人感觉),于是花时间收集了一些资料,整理了一些比较好的文章,从头到尾把ZFNet说了一遍。一、ZFNet简介1.1 为什么起名ZFnetwork ILSVRC 2013获胜者是来自Matthew Zeiler和Rob Fergus的卷积网络。它被称为ZFNet(Zeiler&..._zf网络

第二十章 注解-程序员宅基地

文章浏览阅读2.1w次,点赞29次,收藏44次。文章目录0.概述1.基本语法定义注解元注解2.编写注解处理器注解元素3.使用apt处理注解4.将观察者模式用于apt5.基于注解的单元测试让测试类继承自泛型类的一个特定版本0.概述注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据注解使我们能够以将由编译器来测试和验证的格式,存储有关程序的额外信息注解的优点:更加干净易读的代码以及编译器类型检查等@Override,表示当前的方法定义将覆盖超类中的方法。如果你不小心拼写错误,或者方

随便推点

STM32F4X ADC_stm32注入触发转换_hwx1546的博客-程序员宅基地

文章浏览阅读110次。ADC全称是Analog-Digital-Converter,模拟数字转换,也叫模数转换。为什么嵌入式系统需要ADC,我们知道在自然界中广泛存在模拟量,比如声、光、电、磁等。但是对于嵌入式系统来说,如果想要识别自然界的模拟量,就必须将模拟量转换成MCU熟悉的数字量,而在模拟量和数字量之间进行转换的模块就叫模数转换器。_stm32注入触发转换

侧滑菜单DrawerLayout+Toolbar结合使用,切换菜单-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏6次。因为最近项目中用到侧滑菜单,于是就想到了谷歌提供的这个类网上看了看资料完成了侧滑菜单的功能,并写了一个demo记录下来,加深记忆和以后做类似功能时,直接看看笔记比住较方便主布局文件分为两个一个是侧滑菜单覆盖toolbar一个是不覆盖toolbar具体看效果图,无赖不会上传gif1.覆盖toolbar2、不覆盖toolbar2、menu主布局文件(

Boost Asio异步发送数据(async_write)崩溃问题记录_boost udp异步崩溃-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏2次。背景服务端与客户端之间的网络通信(使用Boost Asio库异步编程模式实现),客户端会向服务端请求数据。在刚开始的测试中,是没有出现问题的。后来有一次测试时,服务端查询完数据后,向客户端发送时总是崩溃。通过gdb调试,可以发现是在调用到异步发送函数(boost::asio::async_write)后崩溃的。打印的栈信息如下:Program terminated with signa..._boost udp异步崩溃

CG动画制作项目第十一篇:后期剪辑以及音效、配音处理(一)-程序员宅基地

文章浏览阅读3.3k次。在做完所有的渲染过程之后,我们的工作相应的也进入到了后期阶段。后期需要处理的事情包括:视频剪辑、调色、特效处理、音效添加、配音、声音处理、BGM、二维镜头调整等等视频剪辑比较简单,目的是为了可以将一个完整流畅的动画展现在大家面前。可是我们如果单纯的拼接一组镜头,我们会感觉到这个动画显得非常的单调,然后我们就需要对我们的动画进行润色。其中之一是调色,调色对我们的动画的表现力有很大的提升,比如一个很悲...

帝国cms多表连接查询及结果集的调用-程序员宅基地

文章浏览阅读1.8k次。SQL语句:select //查询 a.*, //a表的所有列 b.truename as writer, //b表的truename 起个别名叫 writer ,实际对应a表中的字段w

python setattribute顺序,Python的map_async如何使结果保持顺序?-程序员宅基地

文章浏览阅读217次。I'm trying to explore Python's multiprocessing library for py3.3 and I noticed an odd result in the map_async function that I've been unable to explain. I've been expecting the results stored from the..._python map 保序