JavaFX8在外观方面进行了一些更改 ,其中最相关的是新CSS API ,它允许您为控件以及已公开的Skin类创建新CSS属性和伪类。

使用CSS可以改变控件的很多外观,但是CSS只能实现很多功能,而这正是Skin类的用处。从“ UI控件体系结构”快速了解控件的体系结构 :

控件遵循经典的MVC设计模式。 控件是“模型”。 它既包含状态又包含处理该状态的功能。 Control类本身不知道它是如何呈现的或用户交互是什么。 这些任务委托给外观(“视图”),后者可以在内部将视图和控制器功能分离到单独的类中,尽管目前没有针对“控制器”方面的公共API。

如前所述,Skinning的某些方面仍未公开API,而这是Behavior类,但是,按照当前的状态,您已经可以做很多事情。

由于Java8尚未处于GA状态(完整版本),因此仍然缺少有关该API的文档,这使我进入了有关JMetro的最新文章 ,当时我误以为您必须扩展一个控件以更改其对外观类的引用,这就是为什么我创建了ErasableTextField的原因。 但是,正如我后来了解到的,您可以仅通过CSS来更改控件的外观类,如下所示:

.text-field{-fx-skin: "jfxtras.styles.jmetro8.MetroTextFieldSkin";
}

“文本字段”样式类已分配给TextField,因此,当更改“ -fx-skin” CSS属性值时,对该控件将使用的皮肤类的引用也会更改。 因此,ErasableTextField类不再是必需的,并且已从JMetro中删除。

我发现这个设计非常有趣! 如您所见,Skins已与控件完全分离,您所要做的就是将样式表分配给场景,而无需触摸应用程序中的任何代码,并且应用程序的外观会发生根本性的变化,例如JMetro文本字段外观添加了一个清除按钮,只要其中包含文本,该按钮就会显示:

JMetro向TextField添加一个清除按钮

参考: Pixel Duke博客上我们JCG合作伙伴 Pedro Duque Vieira的Java8外观(JavaFX8) 。

翻译自: https://www.javacodegeeks.com/2013/12/skinning-in-java8-javafx8.html

Java8中的外观(JavaFX8)相关推荐

  1. Java8中Lambda表达式的10个例子

    Java8中Lambda表达式的10个例子  例1 用Lambda表达式实现Runnable接口 Java代码   //Before Java 8: new Thread(new Runnable() ...

  2. Java8中Stream流对集合操作

    java8中Stream流引入函数式编程思想,主要配合各种接口.lambda表达式.方法引用等方式,为集合的遍历.过滤.映射等提供非常"优雅"的操作方式. Student.java ...

  3. 字符串拼接还在用StringBuilder?快试试Java8中的StringJoiner吧,真香!

    点击关注公众号,Java干货及时送达 前言 之前,我们经常会通过StringBuffer或者StingBuilder对字符串进行拼接,但是你知道Java8中推出的StringJoiner吗?它比前者更 ...

  4. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

  5. java8中的default关键字

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 把代码写优雅,把架构设计优雅是个值得持续追求的事情.有很多银弹,语法糖和套路可以完美解决代码的扩展性,优雅性.今天简单了解下 ...

  6. 教你怎么样在 Java8 中优雅的避开空指针异常

    2019独角兽企业重金招聘Python工程师标准>>> 要说 Java 编程中哪个异常是你印象最深刻的,那 NullPointerException 空指针可以说是臭名昭著的.不要说 ...

  7. Java8中的HashMap分析

    本篇文章是网上多篇文章的精华的总结,结合自己看源代码的一些感悟,其中线程安全性和性能测试部分并未做实践测试,直接是"拿来"网上的博客的. 哈希表概述 哈希表本质上一个数组,数组中每 ...

  8. java8中的Lamba表达式

    1.什么情况有下可以使用lamba 在函数式接口中可以使用 2.什么是函数式接口 只有一个抽象方法的接口称为函数式接口,同时将这个抽象方法称为函数描述符 3.java8中新增了哪些函数式接口 Pred ...

  9. Java8中的流操作-基本使用性能测试

    一.流(Stream)简介 流是 Java8 中 API 的新成员,它允许你以声明式的方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).这有点儿像是我们操作数据库一样,例如我想要查询出热 ...

最新文章

  1. python matplotlib 显示opencv的图像
  2. np.zeros(),np.empty()
  3. Tomcat 架构原理到架构设计,写得非常好!
  4. 35个Java代码性能优化总结
  5. sql语句优化(二)
  6. LoaderManager使用详解(二)---了解LoaderManager
  7. python 发送邮件附件及文字信息
  8. 关于Vue vue-cli安装遇到的一些问题
  9. ssh框架的构成分析和代码构架小结 .
  10. DB2数据库下载(v9.7/v10.5/v11.1)
  11. 数字锁相环matlab仿真,锁相环仿真_MATLAB仿真程序代码_二阶锁相环仿真过程
  12. 记一次Maya使用入门
  13. windows用c++获取cpu温度
  14. Mac Gem Menu for OneNote 激活——应用任何版本
  15. TSC 打印机开发TSPL黑底白字的打印以及一些问题
  16. ps -mp pid -o THREAD,tid,time;printf %x\n tid;jstack pid |grep tid -A 30;CPU占用太高追查
  17. abaqus html安装,abaqus 2016安装错误
  18. 爆料:Micron计划推出OLC(Octa Level Cell) NAND
  19. 无线发射器c语言程序代码,单片机编码 无线模块发送与接收 程序
  20. Unity实现模型点击

热门文章

  1. ios刷android8.0,颤抖吧 iOS, Android 8.0正式发布!
  2. java本地创建zk节点
  3. 这七种回归分析技术,学了不后悔
  4. 2017尼毕鲁笔试算法题
  5. netbeans调试_从NetBeans运行和调试WildFly Swarm应用程序
  6. 朝着理想坚实迈进_坚实原则:开放/封闭原则
  7. css阴影属性_第三场阴影场与属性访问器接口
  8. apache fop_Apache FOP与Eclipse和OSGi的集成
  9. javaserver_如何在JavaServer Pages中使用Salesforce REST API
  10. OCA第6部分中的Java难题