Java8中的外观(JavaFX8)

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添加一个清除按钮

JMetro向TextField添加一个清除按钮

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值