(翻译)第十二回 JavaFX2.0 复选框CheckBox

简介:   原文地址http://download.oracle.com/javafx/2.0/ui_controls/checkbox.htm   CheckBox类让你可以在应用中创建复选框。

 

原文地址http://download.oracle.com/javafx/2.0/ui_controls/checkbox.htm

 

CheckBox类让你可以在应用中创建复选框。尽管复选框看起来很想单选框 ,但是它们并不能被放置进一个开关组中来实现很多选项的选择。你可以复习一下前面关于Radio Button 和Toggle Button相关的内容。

Figure 6-1  是有三个复选框的一个应用,这些复选框用来控制工具栏中的图标是否显示。

Figure 6-1 Checkbox Sample

Checkbox sample
Description of "Figure 6-1 Checkbox Sample"

 

创建Checkbox

Example 6-1   creates two simple checkboxes.

//Example 6-1 Creating Checkboxes

//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中的方法对它们进行设置。在Example 6-1 setText方法为 c1这个复选框定义了标题,设置setSelected方法为 true以使程序运行后 cb1是选中的。

定义状态

复选框能被定义为明确或不明确。被定义为明确后就可以被选中或取消选中,但是不明确的话就不能被选中或取消选中。结合使用CheckBox类的 setSelected  setIndeterminate方法来为复选框指定状态。 Table 6-1 是三个不同状态的复选框,它们的 INDETERMINATE  SELECTED属性不相同。

Table 6-1 States of a Checkbox

Property Values Checkbox Appearance

INDETERMINATE   = false

SELECTED   = false

The checkbox is deselected.

INDETERMINATE   =false

SELECTED   = true

The checkbox is selected.

INDETERMINATE   = true

SELECTED   = true/false

The checkbox is undefined.

当复选框要呈现多种状态的UI元素时要为它们指定三种状态,如"Yes", "No", "Not Applicable"。CheckBox 类的 allowIndeterminatePropety设置了复选框对象是否能在全部三种状态(选中、取消选中、不明确)中循环 。如果设置 ,这个控件就可以在三种状态中循环。否则 ,这控件只能在选中和取消选中两种状态中切换。下一部分的应用中构造了三个复选框,并且只有两个状态。

 

 

设置行为

Example 6-2 中的代码块创建了三个复选框,这样当一个复选框被选中后,相应的图标就显示出来。

//Example 6-2 Setting the Behavior for the Checkboxes

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]是第一个复选框,被分配了"Security"这个标题;同时image[0]接收了"Security.png"作为getResourceStream方法的文件名。如果一个特定的复选框被选中后,相应的图片就被分配成它的图标。如果一个复选框被取消选中,图标接收 null图片所以没有图标分配。

Figure 6-2  是应用中的 Security 和Chart 复选框被选中,Project 取消选中。

Figure 6-2 Checkbox Application in Action

Two checkboxes are selected
Description of "Figure 6-2 Checkbox Application in Action"

 

 

美化Checkbox

Figure 6-2  中的复选框有CheckBox 默认的外观和感觉。可以通过使用 setStyle  方法来改变它的样子,见 Example 6-3 .

//Example 6-3 Styling a Checkbox

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;" ); 

 

新风格包括了一条浅蓝色点边框和一个扩大字体的标题。Figure 6-3  是使用了这种风格的 cb1复选框。

Figure 6-3 Styled Checkbox

Description of Figure 6-3 follows
Description of "Figure 6-3 Styled Checkbox"

要为应用中的所有复选框设置特定的风格,按照下面的步骤:

  • 创建一个 .css文件;

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

  • checkbox   CSS 类中定义所有需要的风格。

  • 在你的JavaFX应用中,使用setStyleClass  方法来使用CSS文件。

 

 

 

 

 

目录
相关文章
|
机器学习/深度学习 编解码 文件存储
YOLOv8改进 | 融合改进篇 | BiFPN+ RepViT(教你如何融合改进机制)
YOLOv8改进 | 融合改进篇 | BiFPN+ RepViT(教你如何融合改进机制)
1538 1
如何对BigDecimal进行非0判断
如何对BigDecimal进行非0判断
446 3
|
机器学习/深度学习 编解码 人工智能
Reading Notes: Human-Computer Interaction System: A Survey of Talking-Head Generation
由于人工智能的快速发展,虚拟人被广泛应用于各种行业,包括个人辅助、智能客户服务和在线教育。拟人化的数字人可以快速与人接触,并在人机交互中增强用户体验。因此,我们设计了人机交互系统框架,包括语音识别、文本到语音、对话系统和虚拟人生成。接下来,我们通过虚拟人深度生成框架对Talking-Head Generation视频生成模型进行了分类。同时,我们系统地回顾了过去五年来在有声头部视频生成方面的技术进步和趋势,强调了关键工作并总结了数据集。 对于有关于Talking-Head Generation的方法,这是一篇比较好的综述,我想着整理一下里面比较重要的部分,大概了解近几年对虚拟人工作的一些发展和
|
机器学习/深度学习 人工智能 自然语言处理
人工智能的边界拓展:从理论到实践的飞跃####
本文探讨了人工智能(AI)技术的最新进展,特别是深度学习领域的创新如何推动AI从理论研究走向广泛应用。通过分析几个关键领域的实际应用案例,如医疗健康、自动驾驶和自然语言处理,本文揭示了AI技术的潜力及其对社会和经济的深远影响。文章还讨论了当前面临的挑战,包括伦理问题和技术瓶颈,并展望了未来的发展趋势。 ####
|
机器学习/深度学习 安全 大数据
揭秘!企业级大模型如何安全高效私有化部署?全面解析最佳实践,助你打造智能业务新引擎!
【10月更文挑战第24天】本文详细探讨了企业级大模型私有化部署的最佳实践,涵盖数据隐私与安全、定制化配置、部署流程、性能优化及安全措施。通过私有化部署,企业能够完全控制数据,确保敏感信息的安全,同时根据自身需求进行优化,提升计算性能和处理效率。示例代码展示了如何利用Python和TensorFlow进行文本分类任务的模型训练。
757 6
|
9月前
|
人工智能 编解码 文字识别
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
OCRmyPDF 是一款开源命令行工具,专为将扫描的 PDF 文件转换为可搜索、可复制的文档。支持多语言、图像优化和多核处理。
1057 17
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
|
开发工具 开发者
Flutter&鸿蒙next 状态管理高级使用:深入探讨 Provider
本文深入探讨了 Flutter 中 Provider 的高级用法,涵盖多 Provider 组合、Selector 优化性能、ChangeNotifierProxyProvider 管理依赖关系以及自定义 Provider。通过这些技巧,开发者可以构建高效、可维护的响应式应用。
437 2
|
Linux 数据安全/隐私保护
Linux cp命令使用指南:详细教程及实际应用场景解析
Linux cp命令使用指南:详细教程及实际应用场景解析
4550 0
|
数据可视化 Linux API
Tkinter与PyQt的对比
【8月更文挑战第3天】本文对比了Python中两大GUI工具包Tkinter与PyQt。Tkinter作为Python标准库的一部分,易于学习且轻量级,适合快速开发简单的跨平台GUI应用。PyQt功能强大且灵活,支持复杂应用的开发,更适合有经验的开发者。通过示例代码展示了如何使用这两种工具包创建基本的GUI应用及图像查看器,帮助读者理解它们的不同之处。选择哪个工具包取决于项目的具体需求、开发者的经验以及对功能和性能的要求。
|
应用服务中间件 Windows
震惊!idea 2021 社区版手把手安装,超详细过程,新手一看就会 如何安装低版本的IDEA? IDEA安装过程中版本冲突怎么办 idea最新版安装!
本文提供了一个详细的指南,用于安装2021年社区版的IntelliJ IDEA,包括如何处理版本冲突和完成安装过程。
1914 2
震惊!idea 2021 社区版手把手安装,超详细过程,新手一看就会 如何安装低版本的IDEA? IDEA安装过程中版本冲突怎么办 idea最新版安装!