翻译自  带有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普通按钮样式的例子。

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

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

    翻译自  使用FXML创建用户界面 本教程展示了使用JavaFX FXML的好处,JavaFX FXML是一种基于XML的语言,它提供了构建与代码的应用程序逻辑分开的用户界面的结构. 如果您从一开始就 ...

  2. jQuery(六)插件、Validate验证提交表单、submitHandler、更改错误信息显示的位置、required、Validator、内置验证方式表、validate ()的可选项汇总

    jQuery(六)插件.Validate验证提交表单.submitHandler.更改错误信息显示的位置.required.Validator.内置验证方式表.validate ()的可选项汇总 文章 ...

  3. html5发光动态效果图,一款带有发光动画的HTML5表单

    今天给大家秀一款带有发光动画的HTML5表单,挺酷的,效果图如下: 当表单获取焦点时,表单四周就会呈现出发光动画的效果,并不断地进行颜色渐变:当表单失去焦点时,停止发光.其中颜色渐变的动画只有基于we ...

  4. CSS基础——CSS 列表和表单【学习笔记】

    CSS 列表和表单 1. 列表标签(重点) 表格是用来显示数据的,列表是用来布局的. 概念: 容器里面装载着结构,样式一致的文字或图表的一种形式,叫列表 特点: 列表最大的特点就是 整齐 .整洁. 有 ...

  5. [css] css怎么更改表单的单选框或下拉框的默认样式?

    [css] css怎么更改表单的单选框或下拉框的默认样式? 下拉框select可以通过appearance:none去除默认样式,然后进行自定义,但是option标签不能通过CSS自定义,所以最佳方案 ...

  6. Magento教程 13:在Magento中设定联络表单的收件信箱

    Magento系统有预设的联络表单功能,位置是在您网站的网址/contacts Magento教程 13:在Magento中设定联络表单的收件信箱 如画面所见,提供简单的栏位让顾客可以透过表单寄送电子 ...

  7. css复选框表单,用CSS来美化表单——复选按钮篇

    原标题:用CSS来美化表单--复选按钮篇 今天,我们来学习如何利用CSS美化checkbox复选框按钮,过程非常简单,本文主要是提供美化复选框按钮的方法,至于美化到何种程度还需大家自己去举一反三,发挥 ...

  8. JavaFX官方教程(一)之JavaFX概述

    翻译自  JavaFX概述 本章概述了可以使用JavaFX API构建的应用程序类型,下载JavaFX库的位置以及有关正在交付的关键JavaFX功能的高级信息. JavaFX是一组图形和媒体包,使开发 ...

  9. JavaFX官方教程(五)之在JavaFX中创建表单

    翻译自  在JavaFX中创建表单 在开发应用程序时,创建表单是一项常见活动.本教程将向您介绍屏幕布局的基础知识,如何将控件添加到布局窗格以及如何创建输入事件. 在本教程中,您将使用JavaFX构建如 ...

最新文章

  1. 让问答更自然 - 基于拷贝和检索机制的自然答案生成系统研究 | 论文访谈间 #02...
  2. android 屏幕切换监听
  3. Catboost原文解读
  4. 最少步数----深搜
  5. 实验二Step1-有序顺序表
  6. 标题: ZZ- Linux 系统裁减指南(LiPS)
  7. Web页面请求的历程(从应用层到链路层)
  8. 安卓编解码的分辨率问题
  9. 江苏省c语言二级刷题软件,计算机二级刷题软件
  10. 【基础知识】【模块介绍】8位8段数码管(74HC595)【硬件部分】
  11. 单核CPU使用多线程能否提高效率?
  12. 《三体》与《西部世界》
  13. WebApi 下载文件流?
  14. ubuntu 1204 server xp 硬盘安装
  15. shell 脚本实战 五
  16. Safari下弹窗被拦截 问题
  17. c语言程序设计作业心得,C语言程序设计实习心得体会
  18. 获取秒懂百科视频地址/获取百度百科视频地址
  19. 一 STM32时钟系统
  20. 「解析」Matplotlib 绘制折线图

热门文章

  1. java实用教程——组件及事件处理——布局的一个小实例
  2. java实用教程——组件及事件处理——DocumentEvent事件
  3. 算法设计与分析——回溯法——旅行售货员问题
  4. linux退出lftp命令,lftp命令使用
  5. 「软件项目管理」一文了解软件项目团队计划
  6. pip 设置超时时间_Python pip使用超时问题解决方案
  7. [C++11]可调用对象包装器function
  8. [Java基础]字符串中的编码解码问题
  9. 2019年第十届蓝桥杯国赛B组试题E-路径计数-dfs(坑题)
  10. 数据结构---Kruskal最小生成树