java fx 建立窗体,3花式窗体与JavaFX CSS

2019独角兽企业重金招聘Python工程师标准>>>

3花式窗体与JavaFX CSS

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

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

图3-1有和没有CSS的登录表单

“图3-1有和无CSS登录表”的说明

本入门教程中使用的工具是NetBeans IDE。开始之前,请确保您正在使用的NetBeans IDE版本支持JavaFX 2.有关详细信息,请参阅系统要求。

创建项目

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

创建CSS文件

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

在NetBeans IDE Projects窗口中,展开Login项目节点,然后展开Source Packages目录节点。  右键单击“ 源软件包”目录下的登录文件夹,然后选择“ 新建”,然后选择“ 其他”。  在“新建文件”对话框中,选择“ 其他”,然后选择“ 级联样式表”,然后单击“ 下一步”。  输入文件名文本字段的登录,并确保文件夹文本字段值为src\login。  单击完成。  在Login.java文件中,通过包含以下粗体显示的代码行,初始化类的style sheets变量Scene以指向级联样式表,以使其显示如示例3-1所示。 示例3-1初始化样式表变量 Example 3-1 Initialize the stylesheets Variable

Scene scene = new Scene(grid, 300, 275);

primaryStage.setScene(scene);

scene.getStylesheets().add

(Login.class.getResource("Login.css").toExternalForm());

primaryStage.show(); 此代码查找src\loginNetBeans项目目录中的样式表。

添加背景图像

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

首先,通过右键单击background.jpg下载背景图像并将其保存到文件系统。然后,将文件复制到src\login登录NetBeans项目中的文件夹中。

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

示例3-2背景图像

Example 3-2 Background Image

.root {

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

}

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

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

图3-2灰亚麻背景

“图3-2灰亚麻背景”

标签的样式

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

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

Example 3-3 Font Size, Fill, Weight, and Effect on Labels

.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)。阴影的目的是增加深灰色文字和浅灰色背景之间的对比。有关drop shadow属性参数的详细信息,请参阅“ JavaFX CSS参考指南”中有关效果的部分。

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

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

说明“图3-3带有阴影的更大,更大的标签”

风格文本

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

在Login.java文件中,删除以下代码行,定义当前为文本对象设置的内联样式: scenetitle.setFont(Font.font(“Tahoma”, FontWeight.NORMAL, 20)); actiontarget.setFill(Color.FIREBRICK); 通过内联样式切换到CSS,您可以将设计与内容分开。这种方法使设计人员更容易掌握风格,而无需修改内容。  使用setID()Node类的方法为每个文本节点创建一个ID : scenetitle.setId("welcome-text"); actiontarget.setId("actiontarget");  在Login.css文件中,定义welcome-text和actiontargetID 的样式属性。对于样式名称,请使用前面带有数字符号(#)的ID,如示例3-4所示。 示例3-4文本效果

Example 3-4 Text Effect

#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类似于您之前看过的。

图3-4显示了两个Text对象的字体变化和阴影效果。

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

“图3-4带阴影效果的文字”说明

按钮的风格

下一步是对按钮进行风格调整,使用户将鼠标悬停在其上时更改样式。此更改将给用户指示按钮是交互式的,标准设计实践。

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

示例3-5按钮阴影

Example 3-5 Drop Shadow for Button

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

}

现在,当用户将鼠标悬停在按钮上时,会创建一个稍微不同的外观。你可以用悬浮伪类来实现。伪类包括类的选择器和由冒号(:)分隔的状态的名称,如示例3-6所示。

示例3-6按钮悬停样式

Example 3-6 Button Hover Style

.button:hover {

-fx-background-color: linear-gradient(#2A5058, #61a2b1);

}

图3-5显示了具有新的蓝灰色背景和白色粗体文本的按钮的初始和悬停状态。

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

“图3-5初始和悬停按钮状态”的说明

最终应用程序如图3-6所示。

图3-6最终风格化应用程序

“图3-6最终风格化应用程序”的说明

转载于:https://my.oschina.net/ch66880/blog/993959

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

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

相关文章

asterisk几个通用函数说明

1. #define ast_config_load(filename, flags) ast_config_load2(filename, AST_MODULE, flags) 加载配置文件filename,并返回一个ast_config结构体指针。 ast_config_load2是调用了 struct ast_config *ast_config_internal_load(const char *filename, struc…

python如何进行格式化输出变量_Python变量格式化输出实现原理解析

print() 函数使用以 % 开头的转换说明符对各种类型的数据进行格式化输出。转换说明符(Conversion Specifier)只是一个占位符(也称为格式化操作符),它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。转换说明符解释%d、%i转换为带符号的十进…

java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...

[求助] Spring4 MVC 返回json格式时候 设置不返回null值属性的问题本帖最后由 bighong0404 于 2015-10-06 12:45:38 编辑背景:使用responseBody设置以json格式返回数据时候. 有时候被返回的对象有些属性是null值, 默认还是会输出. 例如下面代码. 在与移动端交互时候会很浪费流量…

log4j无厘头异常

今天系统升级&#xff0c;是web程序&#xff0c;备份程序之后&#xff0c;替换class下面的com的全部类文件后shutdown tomcat&#xff0c;然后启动程序&#xff0c;startup之后出现 java.lang.NullPointerException at org.apache.log4j.spi.LocationInfo.<init>(Loca…

res_config_mysql和chan_sip模块的加载分析

1. res_config_mysql的模块加载早于chan_sip&#xff0c;他们的加载函数均为load_module 先分析res_config_mysql的load_module函数 parse_config(0); parse_config解析res_config_mysql文件&#xff0c;并用文件中的配置信息填充mysql_conn结构体 我当前的res_config_mysql文件…

如何连接安卓手机_安卓手机如何使用AirPods

苹果公司推出的无线蓝牙耳机AirPods可以说是市面上最好的无线耳机&#xff0c;配合iPhone使用能够给你带来畅快舒适的体验。有很多小米华为oppo&#xff0c;vivo等安卓手机用户也在问了&#xff0c;安卓手机能够支持AirPods呢&#xff0c;答案是肯定的。图片来源&#xff1a;网…

晒一下我的代码生成器

经过最近一段新的尝试【BS架构】,之前的编程一直是CS架构&#xff0c;但也总是在忙那些项目&#xff0c;没法整理出一套符合自己团队的一套编程体系和架构&#xff1b; 新的起点&#xff0c;又是一个新的挑战&#xff0c;现在已经是03年&#xff0c;最早做的时候是07年&a…

discuz viewthread.php,修改discuz论坛的标题header和footer

1、关于去掉DZ论坛标题处的Powered by Discuz!&#xff0c;去掉他的原因是为了使标题更加简洁明了&#xff0c;还有就是不被搜索到导致SPAM&#xff1a;具体的修改方法&#xff1a;打开/templates/default/header.htm&#xff0c;在第五行中直接删除&#xff1a;- Powered by D…

sed命令详解

转载&#xff1a;http://blog.chinaunix.net/u/22677/showart_1076318.html1.简介sed是非交互式的编辑器。它不会修改文件&#xff0c;除非使用shell重定向来保存结果。默认情况下&#xff0c;所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件&#xff08;或输入&#xff…

Oracle中的单值函数

Oracle的函数 Oracle函数可以分为单值函数和分组函数两大类&#xff0c;单值函数又分为字符函数、日期和时间函数、数字函数、转换函数和混合函数&#xff1a;分组函数右count、max、min、avg、sum&#xff0c;都可以和group by 搭配使用。 单值函数 1、 字符函数 l 字符串连…

asterisk账号和拨号方案mysql存储(静态)

asterisk账号和拨号方案的静态存储相对动态的话&#xff0c;比较简单&#xff0c;而且也比较好理解&#xff0c;说白了就是把 sip.conf和extensions.conf文件的内容完完整整的放入到数据库中&#xff0c;不像动态存储那样&#xff0c;不但需要数据库而且还需要 sip.conf和ext…

matlab自动排版,工具方法| Matlab 简单绘图与排版

matlab启动界面 来自百度百科对于很多教师与学生&#xff0c;Matlab是做数值计算很好的一款软件。收集、整理、分析数据十分的方便&#xff0c;我们也可以通过Matlab画出相对比较好看的图。这里简单总结下Matlab的画图方式与排版&#xff0c;供初学者参考、交流。Matlab基本都是…

坦克大战代码_坦克大战系列文章-坦克大战简介

前言本篇主要对坦克大战Robocode做一个简单的介绍&#xff0c;对java最初的人工智能算法演练工具做一个了解坦克大战简介今天我们要谈的是java 最初的基于人工智能算法的仿真模拟坦克大战&#xff0c;全称Robocode。Robocode 是一位IBM的工程师 Mat Nelson 用Java 语言所创造的…

php mongo sort -1出错,mongoDB排序引起的ERROR

mongo 使用过程中遇到了一个问题&#xff0c;需求就是要对mongo 库中数据进行排序查询logger.info("历史采集汇总");// 一天数据calendar Calendar.getInstance();calendar.add(Calendar.HOUR_OF_DAY, -24);cond new BasicDBObject();cond.put("workTime"…

数学_同取对数(HDU_1060)

m n^n > lg(m) lg(n^n) > lg(m) n*lg(n) > m 10^(n*lg(n)) 对于 10^N 10^123.456 10^(1230.456) 10^123 * 10^0.0.456 10^123 的最高位为 1,即 10^N 的最高位取决于 n*lg(n) 的小数部位 #include <stdio.h> #include <string.h> #include &l…

python浮点型数据怎么显示为图片_python数字图像处理(4):图像数据类型及颜色空间转换...

一、图像数据类型及转换在skimage中&#xff0c;一张图片就是一个简单的numpy数组&#xff0c;数组的数据类型有很多种&#xff0c;相互之间也可以转换。这些数据类型及取值范围如下表所示&#xff1a;Data typeRangeuint80 to 255uint160 to 65535uint320 to 232float-1 to 1 …

uboot mkimage使用详解

mkimage使用详解 uboot源代码的tools/目录下有mkimage工具&#xff0c;这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。 mkimage在制作映象文件的时候&#xff0c;是在原来的可执行映象文件的前面加上一个0x40字节的头&#xff0c;记录参数所指定的信息&#xff0c…

php查询文件名,php怎么查询文件名

php查询文件名的方法&#xff1a;可以利用pathinfo()函数来查询。pathinfo()函数以数组的形式返回关于文件路径的信息&#xff0c;包括目录路径、文件名等&#xff0c;如&#xff1a;【print_r(pathinfo("/testweb/test.txt"))】。pathinfo() 函数以数组的形式返回关…

基于live555的视频直播 DM368IPNC RTSP分析

因需要&#xff0c;从个人的理解顺序和需求角度对live555的分析与开发整理&#xff0c;包含RTSP Server与RTSP Client、如何直播H.264流与JPEG流等&#xff0c;均进行了探讨&#xff0c;对live555的初学者有一定的指导意义。 本人习惯使用excel归档&#xff0c;所以本文均为exc…

图像风格迁移_图像风格迁移—谷歌大脑团队任意图像风格化迁移论文详解

点击蓝字关注我们AI研习图书馆&#xff0c;发现不一样的世界风格迁移图像风格化迁移是一个很有意思的研究领域&#xff0c;它可以将一张图的风格迁移到另外一张图像上&#xff0c;由此还诞生了Prisma和Ostagram这样的商业化产品。本文&#xff0c;我们将介绍谷歌大脑团队的一篇…