JavaFX官方教程(六)之带有JavaFX CSS的花式表单

翻译自  带有JavaFX CSS的花式表单

本教程通过添加级联样式表(CSS)使您的JavaFX应用程序看起来很有吸引力。您开发设计,创建.css文件并应用新样式。

在本教程中,您将获取一个使用标签,按钮和背景颜色的默认样式的登录表单,并通过一些简单的CSS修改将其转换为程式化的应用程序,如图5-1所示。

图5-1使用和不使用CSS的登录表单

本入门教程中使用的工具是NetBeans IDE。在开始之前,请确保您使用的NetBeans IDE版本支持JavaFX 8.有关详细信息,请参阅Java SE下载页面的Certified System Configurations页面。

 

1、创建项目

如果您从一开始就按照入门指南进行操作,那么您已经创建了本教程所需的Login项目。如果没有,请通过右键单击Login.zip并将其保存到文件系统来下载Login项目。从zip文件中提取文件,然后在NetBeans IDE中打开该项目。

 

2、创建CSS文件

您的第一个任务是创建一个新的CSS文件,并将其保存在与应用程序主类相同的目录中。之后,您必须使JavaFX应用程序知道新添加的级联样式表。

  1. 在NetBeans IDE Projects窗口中,展开Login项目节点,然后展开Source Packages目录节点。

  2. 右键单击Source Packages目录下的login文件夹,选择New,然后选择Other

  3. 在“新建文件”对话框中,选择“ 其他”,然后选择“ 层叠样式表”,并单击“ 下一步”

  4. 在“文件名”文本字段中输入“ 登录”,并确保“文件夹”文本字段值为src\login

  5. 单击完成

  6. Login.java文件中,通过包含下面以粗体显示的代码行来初始化类的style sheets变量Scene以指向级联样式表,以便它如示例5-1所示。

    示例5-1初始化样式表变量

    Scene scene = new Scene(grid, 300, 275);
    primaryStage.setScene(scene);
    scene.getStylesheets().add(Login.class.getResource("Login.css").toExternalForm());
    primaryStage.show();

    此代码src\login在NetBeans项目的目录中查找样式表。

 

3、添加背景图像

背景图片有助于使您的表单更具吸引力。在本教程中,您将添加一个带有亚麻纹理的灰色背景。

首先,通过右键单击background.jpg图像并将其保存到src\loginLogin NetBeans项目的文件夹中来下载背景图像。

现在,将background-image属性的代码添加到CSS文件中。请记住,路径是相对于样式表的。因此,在示例5-2的代码中,background.jpg映像与Login.css文件位于同一目录中。

例5-2背景图像

.root {-fx-background-image: url("background.jpg");
}

背景图像应用于.root样式,这意味着它将应用于Scene实例的根节点。样式定义由property(-fx-background-image)的名称和property()的值组成url(”background.jpg”)

图5-2显示了具有新灰色背景的登录表单。

图5-2灰色亚麻背景

 

4、标签样式

下一个要增强的控件是标签。您将使用.label样式类,这意味着样式将影响表单中的所有标签。代码在例5-3中。

示例5-3字体大小,填充,重量和对标签的影响

.label {-fx-font-size: 12px;-fx-font-weight: bold;-fx-text-fill: #333333;-fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );
}

此示例增加了字体大小和重量,并应用了灰色的阴影(#333333)。投影的目的是增加深灰色文本和浅灰色背景之间的对比度。有关投影功能参数的详细信息,请参阅“ JavaFX CSS参考指南”中有关效果的部分。

增强的用户名和密码标签如图5-3所示。

图5-3带阴影的更大,更大的标签

 

5、风格文字

现在,Text在表单中的两个对象上创建一些特殊效果:scenetitle包括文本Welcome,以及actiontarget用户按下登录按钮时返回的文本。您可以将不同的样式Text应用于以各种方式使用的对象。

  1. 在该Login.java文件中,删除以下代码行,这些代码行定义当前为文本对象设置的内联样式:

    scenetitle.setFont(Font.font(”Tahoma”, FontWeight.NORMAL, 20));

    actiontarget.setFill(Color.FIREBRICK);

    通过内联样式切换到CSS,您可以将设计与内容分开。这种方法使设计人员更容易控制样式而无需修改内容。

  2. 使用setID()Node类的方法为每个文本节点创建一个ID :以粗体添加以下行,使它们如示例5-4所示。

    示例5-4为文本节点创建ID

    ...
    Text scenetitle = new Text("Welcome");
    scenetitle.setId("welcome-text");
    ...
    ...
    grid.add(actiontarget, 1, 6);
    actiontarget.setId("actiontarget");
    ..
  3. Login.css文件中,定义welcome-textactiontargetID 的样式属性。对于样式名称,请使用前面带有数字符号(#)的ID,如例5-5所示。

    例5-5文本效果

    #welcome-text {-fx-font-size: 32px;-fx-font-family: "Arial Black";-fx-fill: #818181;-fx-effect: innershadow( three-pass-box , rgba(0,0,0,0.7) , 6, 0.0 , 0 , 2 );
    }
    #actiontarget {-fx-fill: FIREBRICK;-fx-font-weight: bold;-fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 );  
    }

欢迎文本的大小增加到32磅,字体更改为Arial Black。文本填充颜色设置为深灰色(#818181),并应用内部阴影效果,从而创建浮雕效果。您可以通过将文本填充颜色更改为背景的较暗版本,将内部阴影应用于任何颜色。有关内部阴影属性参数的详细信息,请参阅“ JavaFX CSS参考指南”中有关效果的部分。

样式定义actiontarget与您之前看到的类似。

图5-4显示了两个Text对象的字体更改和阴影效果。

图5-4带阴影效果的文本

 

6、按钮样式

下一步是设置按钮的样式,使用户将鼠标悬停在按钮上时更改样式。此更改将为用户提供按钮是交互式的指示,这是一种标准设计实践。

首先,通过添加例5-6中的代码为按钮的初始状态创建样式。此代码使用.button样式类选择器,这样如果您在以后向表单添加按钮,则新按钮也将使用此样式。

例5-6按钮的阴影

.button {-fx-text-fill: white;-fx-font-family: "Arial Narrow";-fx-font-weight: bold;-fx-background-color: linear-gradient(#61a2b1, #2A5058);-fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 );
}

现在,当用户将鼠标悬停在按钮上时,创建略微不同的外观。您可以使用悬停伪类来执行此操作。伪类包括类的选择器和由冒号(:)分隔的状态名称,如例5-7所示。

例5-7按钮悬停样式

.button:hover {-fx-background-color: linear-gradient(#2A5058, #61a2b1);
}

图5-5显示了按钮的初始和悬停状态,其中包含新的蓝灰色背景和白色粗体文本。

图5-5初始和悬停按钮状态

图5-6显示了最终的应用程序。

图5-6最终的程式化应用程序

 

7、从这往哪儿走

以下是您可以尝试的一些事项:

  • 看看你可以用CSS创建什么。一些文档,可以帮助你剥皮的JavaFX应用程序使用CSS,用CSS样式图表,以及JavaFX的CSS参考指南。使用CSS进行Skinning和JavaFX Scene Builder用户指南的CSS Analyzer部分还提供了有关如何使用JavaFX Scene Builder工具为JavaFX FXML布局设置外观的信息。

  • 见造型FX按钮用CSS为如何创建使用CSS普通按钮样式的例子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建ssh框架的步骤

1.创建web项目 2.导入ssh 所需要的多有jar包,到web-inf下面的lib里面 3.将导入过来的jar包都build–path一下 4.切换到myeclipse database视图中,添加链接数据库的链接 5.新建一个数据库连接: 常用数据库连接字符串:https://blog.…

JAM的计数法

经典的题目了,自己想了个新方法 方法:先从低位往高位找到一个可以加的位数,然后把后面的数变为前面那个数加1 建议先从主程序开始看。本人蒟蒻,不好请原谅 方法:先从低位往高位找到一个可以加的位数,然后把…

JavaFX官方教程(七)之使用FXML创建用户界面

翻译自 使用FXML创建用户界面 本教程展示了使用JavaFX FXML的好处,JavaFX FXML是一种基于XML的语言,它提供了构建与代码的应用程序逻辑分开的用户界面的结构。 如果您从一开始就开始使用本文档,那么您已经了解了如何使用JavaFX创建登录应用…

块元素与行内元素转化(display属性)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>.div1{width: 200px;height: 200px;background-color: lightyellow;border: 1px solid lightcoral;margin: 0px auto;}.s1{/*行内元素设置宽和高…

DllImport 自动选择x64或x86 dll

前言 标题不知道怎么确切地命名&#xff0c;在.net的托管世界里&#xff0c;有时不得不使用c的某个动态库&#xff0c;比如ocr、opencv等&#xff0c;如果幸运&#xff0c;有前人已经包装出.net版本&#xff0c;但有些不非常流行的库&#xff0c;只能自己使用pinvoke或c cli包…

《金色梦乡》金句摘抄(八)

System.out.println("《金色梦乡》"); System.out.println("小说类型的书就是比散文类型的书好看"); System.out.println("通俗易懂"); System.out.println("这周能看完");他转身背对着安保探头&#xff0c;有种被看门人或看门狗盯上了…

JavaFX官方教程(八)之JavaFX中的动画和视觉效果

翻译自 JavaFX中的动画和视觉效果 您可以使用JavaFX快速开发具有丰富用户体验的应用程序。在本入门教程中&#xff0c;您将学习如何使用非常少的编码创建动画对象并获得复杂的效果。 图7-1显示了要创建的应用程序。 图7-1彩色圆圈应用 图7-2显示了该ColorfulCircles应用程序…

《金色梦乡》金句摘抄(九)

System.out.println("《金色梦乡》"); System.out.println("小说类型的书就是比散文类型的书好看"); System.out.println("通俗易懂"); System.out.println("这周能看完");他在观察&#xff0c;就像饲养员为了掌握动物的情况和习性而观…

广搜(初见)

以下是广搜水题 题意&#xff1a;输入一个n*n的迷宫&#xff0c;输入从起点到终点的最短路 输入&#xff1a; 12 //迷宫大小 2 9 11 8 //起点和终点 1 1 1 1 1 1 1 1 1 1 1 1 //邻接矩阵&#xff0c;0表示通&#xff0c;1表示不通 1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 …

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来&#xff0c;作为.Net大军中的一员&#xff0c;我热忱地拥抱了.Net Core并且积极使用其进行业务的开发&#xff0c;我们先介绍下.Net Core项目下实现文件上传下载接口。 一、开发环境 毋庸置疑&#xff0c;宇宙第一IDE VisualStu…

JavaFX官方教程(九)之转换

翻译自 Transformations Overview 本章介绍JavaFX中支持的转换。 所有转换都位于javafx.scene.transform包中&#xff0c;并且是类的子Transform类。 介绍转换 变换根据某些参数改变坐标系中图形对象的位置。JavaFX支持以下类型的转换&#xff1a; 翻译 回转 缩放 剪毛 …

《金色梦乡》金句摘抄(十)

System.out.println("《金色梦乡》"); System.out.println("小说类型的书就是比散文类型的书好看"); System.out.println("通俗易懂"); System.out.println("这周能看完");“面对遭受迫害的人&#xff0c;有人选择拯救&#xff0c;有人…

stream流把list转为map

1.对象中的属性转map 通过Collectors.toMap list.stream().collect(Collectors.toMap(Person::getId,Person::getName)); 2.收集对象本身 list.stream().collect(Collectors.toMap(Person::getId,list->list)

广搜(练习4题)

几道例题还比较简单&#xff0c;练习就卡了比较长的时间了(。_。) 所以我会写一下解题思路了(๑ŐдŐ) 还有博客抽风所以代码里会有一些奇奇怪怪的东西&#xff0c;无视就好了qwq。 这几道题我就按各人认为的难易程度来排序吧QAQ。 第一题. 题意&#xff1a;输入一个迷宫&…

谈一下我们是怎么做数据库单元测试(Database Unit Test)的

背景介绍 最近在团队在做release之前的regression,把各个feature分支merge回master之后发现DB的单元测试出现了20多个失败的test cases。之前没怎么做过DB的单元测试&#xff0c;正好借这个机会熟悉一下写DB单元测试的流程。 这篇博文中首先介绍一下在我们的特定项目场景中是…

JavaFX官方教程(十)之转换类型和示例

翻译自 Transformation Types and Examples 本文档描述了特定的转换并提供了代码示例。 转换 平移变换沿着相对于其初始位置的一个轴将节点从一个位置移动到另一个位置。木琴条的初始位置由x&#xff0c;y和z坐标定义。在实施例2-1中&#xff0c;初始位置值由指定的xStart&a…

ssl2293-暗黑游戏【dp练习题】

题目&#xff1a; 暗黑游戏中&#xff0c;装备直接决定玩家人物的能力。可以使用Pg和Rune购买需要的物品。暗黑市场中的装备&#xff0c;每件有不同的价格&#xff08;Pg和Rune&#xff09;、能力值、最大可购买件数。Kid作为暗黑战网的一个玩家&#xff0c;当然希望使用尽可能…

java知识点整理

1.char类型可以整型类型的值 2.变量的命名规则&#xff1a; (1)由字母、、$ 开头的 (2)后面部分可以拾字母、数字、下划线、$ (3)不能是java的关键词 (4)变量名要有意义 3.0是偶数 4.数据类型转换规则&#xff1a; int(源类型) a 1.0(目标类型); (1)源类型大于目标类型&#…