JavaFX 皮肤功能
作为RIA技术之一,为了让应用程序的界面看起来更加的漂亮或者更有个性,皮肤功能自然是必不可少的。
在JavaFX中,可以使用CSS样式表来进行皮肤的更换。不过JavaFX中的CSS是基于W3C CSS version 2.1,但又不完全相同。
JavaFX中的换肤有几种方式。
1.完全重新定义的控件样式
我们首先创建一个CSS文件,命名为skin1.css,在里面定义一个Button的样式。
- .CustomButton{
- -fx-background-color: #aaffff;
- -fx-text-fill: #000000
- }
如上所示,只是简单的改变背景色和文本颜色。
当然大家很容易看出来,与标准的CSS相差不大。
那么,我们就在程序中使用一下看看效果。
新建一个JavaFX Project,写下如下代码。
- public class Skintest extends Application {
- public static void main(String[] args) {
- launch(args);
- }
- @Override
- public void start(Stage primaryStage) {
- primaryStage.setTitle("Test Skin in JavaFX");
- final Button btn = new Button("I am a Button");
- StackPane root = new StackPane();
- Scene scene = new Scene(root, 800, 600);
- scene.getStylesheets().add("skin1.css");
- btn.getStyleClass().add("CustomButton");
- root.getChildren().add(btn);
- primaryStage.setScene(scene);
- primaryStage.show();
- }
- }
在程序只创建了一个Button。
首先通过Scene.getStylesheets().add(String str)方法进行添加样式。
然后使用button.getStyleClass().add(String str)方法让Button应用这个样式。
右上图可以看到,这个Button已经与默认的按钮完全不一样了。
下面我们在skin1.css中,新添加一个Button的样式,暂命名为CustomButton2。
- .CustomButton2{
- -fx-background-color: #000000;
- -fx-text-fill: #FFFFFF
- }
然后添加Button的事件,让Button在点击后,应用这个样式。
- btn.setOnAction(new EventHandler<ActionEvent>() {
- @Override
- public void handle(ActionEvent event) {
- btn.getStyleClass().add("CustomButton1");
- }
- });
记住如果在事件中使用控件,定义的时候必须定义为final类型。
那么,我们运行之后,点击Button看看。
如图所示,点击之后,Button应用了新的样式,变成了黑底白字了。
怎么样?虽然只是简单的改变了背景色和文字色,但其实看起来效果还是不错的。
2.重写控件的样式
有的人会觉得,每个控件都设置一次样式很麻烦,为何不能直接设置所有Button的样式呢?当然,JavaFX也提供这
个功能,我们只需要把上面的skin1.css中的.CustomButton改为.button,就会覆盖Button控件的样式。
那么我们更改为.button后,再添加一个Button看看运行的效果。
你会发现,没有单独设置Button的样式,但是将skin1.css添加进Scene的StyleSheets中后,所有的Button样式都改变了。
3.更改整个程序的样式
同样的,既然可以更改所有button的样式,我们也可以进行少许修改,就能更改整个应用软件的风格了。
我们只需要添加.root的样式即可。
- .root{
- -fx-font-size: 16pt;
- -fx-base: rgb(255, 145, 47);
- -fx-background: rgb(255, 255, 255);
- }
然后往代码中添加几个其他的控件,运行看看。
大家可以看到,整体的风格都改变了。这也是更换主题的很方便的方法。
另外, CSS中有class styles 和id styles,同样的JavaFX中也有。对于控件而言只需要setId()即可应用id styles。
OK,时间已经很晚了,JavaFX的换肤功能就讲到这里了。该睡觉去了。
JavaFX 皮肤功能相关推荐
- java fx 皮肤_JavaFX 皮肤功能
作为RIA技术之一,为了让应用程序的界面看起来更加的漂亮或者更有个性,皮肤功能自然是必不可少的. 在JavaFX中,可以使用CSS样式表来进行皮肤的更换.不过JavaFX中的CSS是基于W3C CSS ...
- [转载] Flex 4 皮肤功能介绍
原文: http://www.adobe.com/devnet/flex/articles/flex4_skinning.html 转载:http://www.smithfox.com/?e=34 F ...
- vue实战-实现换主题/皮肤功能
现在的app和pc网站做的越来越花哨,但是有时候用户并不喜欢你给他挑选好的主题颜色,这个时候就需要一个换皮肤的功能了. 那么我们怎么在vue中实现这个换皮肤的功能呢? 实现思路 我们用vue一般都是写 ...
- JavaScript+Css+Html实现网页换皮肤功能
描述:JavaScript+Css+Html实现网页换皮肤功能 原理:使用不同网页背景保存在不同CSS里面,当点击切换的时候通过JavaScript将原来的样式表改为新的CSS就可以完成换肤功能 代码 ...
- [转载]Android实现更换皮肤功能
原文地址:Android实现更换皮肤功能作者:兜兜 转载请注明出处,商用请与本人联系. 本系列专题培训适用范围:初级Android程序员,即有J2SE基础和Android初级水平.J2SE基础是指掌握 ...
- jQuery实现无刷新切换主题皮肤功能
主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格,增强了用户体验.本文将围绕如何使用jQuery实现点击无刷新切换主题皮肤功能. 实现该功能的原理就是通过点击定义的 ...
- apk分享: Android应用更换皮肤功能的实现思路教程。
Android 的发展确实太快了,每年的都有很多新东西出现,想要覆盖所有新东西感觉也不太可能,我这里主要说一下主要的 Android 的主要新技术发展,其实了解 Android 的发展趋势,可能对开发 ...
- JavaFX:截图功能
JavaFX:截图功能 b站up主Aimls的课程:JavaFX开发桌面截图功能 码农教程:基于Javafx的截图功能实现 脚本之家:Java模拟QQ桌面截图功能实现方法 鼠标事件 JavaFX:鼠标 ...
- Java实战之管家婆记账系统(22)——实现修改软件主题皮肤功能
本节概要 本节实现修改界面皮肤的功能,即使整个程序应用不同的CSS样式. 实现功能 关于软件不同的皮肤要能保存起来,即在软件关闭后再次重启也能显示改变的皮肤,因此需要将其保存在电脑本地,所以在prop ...
最新文章
- centos静态IP配置方法
- 第五章 python中正则表达式的使用
- Win32编程day04 学习笔记
- Android Hook ActivityThread mH 消息
- ADO.NET知识学习总结
- 通用mapper和分类实现
- GDCM:gdcm::StreamImageWriter的测试程序
- 10-5 4-6 查询在具有最小内存容量的所有PC中具有最快处理器的PC制造商 (10 分)
- 打卡小程序源码修复登录接口
- 步骤一:入门linux基础/01Linux简介和安装/003Linux系统的多面性
- ROS入门-13.服务数据的定义与使用
- 如何在ViewModel中正确地使用Timer(定时器)
- mysql关于数据是datetime类型
- 最近,华为应用市场上线了一个服务
- Teechart图表教程:Teechart的功能简介
- DevOps知识地图
- Linux系统修改网卡名称(eth1修改为eth0)
- unity3d显示c4d材质_纯干货:C4D从初学者到精通,其实很简单
- 一款完整开源的物联网基础平台
- background-image使用
热门文章
- CSS如何实现内凹角效果
- linux vps 桌面,linode linux vps的centos系统上安装X Window System GNOME图形桌面使用vnc连接 - 乖兔博客...
- 探讨Redis分布式锁解决优惠券拼抢问题
- linux 怎么看浏览器,Linux下浏览器比比看
- 命不好,因为你同床共枕的人
- 全息显示论文阅读笔记20210326
- uni-app的生命周期说明及平台差异性说明
- 简单说说 OSChina 的技术架构
- ASEMI整流桥ABS210参数,ABS210规格书,ABS210特征
- 滑铁卢大学计算机专业就业,克服艰难 收获滑铁卢大学计算机专业offer