作为RIA技术之一,为了让应用程序的界面看起来更加的漂亮或者更有个性,皮肤功能自然是必不可少的。

在JavaFX中,可以使用CSS样式表来进行皮肤的更换。不过JavaFX中的CSS是基于W3C CSS version 2.1,但又不完全相同。

JavaFX中的换肤有几种方式。

1.完全重新定义的控件样式

我们首先创建一个CSS文件,命名为skin1.css,在里面定义一个Button的样式。

[css] view plaincopy
  1. .CustomButton{
  2. -fx-background-color: #aaffff;
  3. -fx-text-fill: #000000
  4. }

如上所示,只是简单的改变背景色和文本颜色。

当然大家很容易看出来,与标准的CSS相差不大。

那么,我们就在程序中使用一下看看效果。

新建一个JavaFX Project,写下如下代码。

[java] view plaincopy
  1. public class Skintest extends Application {
[java] view plaincopy
  1. public static void main(String[] args) {
  2. launch(args);
  3. }
  4. @Override
  5. public void start(Stage primaryStage) {
  6. primaryStage.setTitle("Test Skin in JavaFX");
  7. final Button btn = new Button("I am a Button");
[java] view plaincopy
  1. StackPane root = new StackPane();
  2. Scene scene = new Scene(root, 800, 600);
  3. scene.getStylesheets().add("skin1.css");
  4. btn.getStyleClass().add("CustomButton");
  5. root.getChildren().add(btn);
  6. primaryStage.setScene(scene);
  7. primaryStage.show();
  8. }
  9. }

在程序只创建了一个Button。

首先通过Scene.getStylesheets().add(String str)方法进行添加样式。

然后使用button.getStyleClass().add(String str)方法让Button应用这个样式。

右上图可以看到,这个Button已经与默认的按钮完全不一样了。

下面我们在skin1.css中,新添加一个Button的样式,暂命名为CustomButton2。

[css] view plaincopy
  1. .CustomButton2{
  2. -fx-background-color: #000000;
  3. -fx-text-fill: #FFFFFF
  4. }

然后添加Button的事件,让Button在点击后,应用这个样式。

[java] view plaincopy
  1. btn.setOnAction(new EventHandler<ActionEvent>() {
  2. @Override
  3. public void handle(ActionEvent event) {
  4. btn.getStyleClass().add("CustomButton1");
  5. }
  6. });

记住如果在事件中使用控件,定义的时候必须定义为final类型。

那么,我们运行之后,点击Button看看。

如图所示,点击之后,Button应用了新的样式,变成了黑底白字了。

怎么样?虽然只是简单的改变了背景色和文字色,但其实看起来效果还是不错的。

2.重写控件的样式

有的人会觉得,每个控件都设置一次样式很麻烦,为何不能直接设置所有Button的样式呢?当然,JavaFX也提供这

个功能,我们只需要把上面的skin1.css中的.CustomButton改为.button,就会覆盖Button控件的样式。

那么我们更改为.button后,再添加一个Button看看运行的效果。

你会发现,没有单独设置Button的样式,但是将skin1.css添加进Scene的StyleSheets中后,所有的Button样式都改变了。

3.更改整个程序的样式

同样的,既然可以更改所有button的样式,我们也可以进行少许修改,就能更改整个应用软件的风格了。

我们只需要添加.root的样式即可。

[css] view plaincopy
  1. .root{
  2. -fx-font-size: 16pt;
  3. -fx-base: rgb(255, 145, 47);
  4. -fx-background: rgb(255, 255, 255);
  5. }

然后往代码中添加几个其他的控件,运行看看。

大家可以看到,整体的风格都改变了。这也是更换主题的很方便的方法。

另外, CSS中有class styles 和id styles,同样的JavaFX中也有。对于控件而言只需要setId()即可应用id styles。

OK,时间已经很晚了,JavaFX的换肤功能就讲到这里了。该睡觉去了。

JavaFX 皮肤功能相关推荐

  1. java fx 皮肤_JavaFX 皮肤功能

    作为RIA技术之一,为了让应用程序的界面看起来更加的漂亮或者更有个性,皮肤功能自然是必不可少的. 在JavaFX中,可以使用CSS样式表来进行皮肤的更换.不过JavaFX中的CSS是基于W3C CSS ...

  2. [转载] Flex 4 皮肤功能介绍

    原文: http://www.adobe.com/devnet/flex/articles/flex4_skinning.html 转载:http://www.smithfox.com/?e=34 F ...

  3. vue实战-实现换主题/皮肤功能

    现在的app和pc网站做的越来越花哨,但是有时候用户并不喜欢你给他挑选好的主题颜色,这个时候就需要一个换皮肤的功能了. 那么我们怎么在vue中实现这个换皮肤的功能呢? 实现思路 我们用vue一般都是写 ...

  4. JavaScript+Css+Html实现网页换皮肤功能

    描述:JavaScript+Css+Html实现网页换皮肤功能 原理:使用不同网页背景保存在不同CSS里面,当点击切换的时候通过JavaScript将原来的样式表改为新的CSS就可以完成换肤功能 代码 ...

  5. [转载]Android实现更换皮肤功能

    原文地址:Android实现更换皮肤功能作者:兜兜 转载请注明出处,商用请与本人联系. 本系列专题培训适用范围:初级Android程序员,即有J2SE基础和Android初级水平.J2SE基础是指掌握 ...

  6. jQuery实现无刷新切换主题皮肤功能

    主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格,增强了用户体验.本文将围绕如何使用jQuery实现点击无刷新切换主题皮肤功能. 实现该功能的原理就是通过点击定义的 ...

  7. apk分享: Android应用更换皮肤功能的实现思路教程。

    Android 的发展确实太快了,每年的都有很多新东西出现,想要覆盖所有新东西感觉也不太可能,我这里主要说一下主要的 Android 的主要新技术发展,其实了解 Android 的发展趋势,可能对开发 ...

  8. JavaFX:截图功能

    JavaFX:截图功能 b站up主Aimls的课程:JavaFX开发桌面截图功能 码农教程:基于Javafx的截图功能实现 脚本之家:Java模拟QQ桌面截图功能实现方法 鼠标事件 JavaFX:鼠标 ...

  9. Java实战之管家婆记账系统(22)——实现修改软件主题皮肤功能

    本节概要 本节实现修改界面皮肤的功能,即使整个程序应用不同的CSS样式. 实现功能 关于软件不同的皮肤要能保存起来,即在软件关闭后再次重启也能显示改变的皮肤,因此需要将其保存在电脑本地,所以在prop ...

最新文章

  1. centos静态IP配置方法
  2. 第五章 python中正则表达式的使用
  3. Win32编程day04 学习笔记
  4. Android Hook ActivityThread mH 消息
  5. ADO.NET知识学习总结
  6. 通用mapper和分类实现
  7. GDCM:gdcm::StreamImageWriter的测试程序
  8. 10-5 4-6 查询在具有最小内存容量的所有PC中具有最快处理器的PC制造商 (10 分)
  9. 打卡小程序源码修复登录接口
  10. 步骤一:入门linux基础/01Linux简介和安装/003Linux系统的多面性
  11. ROS入门-13.服务数据的定义与使用
  12. 如何在ViewModel中正确地使用Timer(定时器)
  13. mysql关于数据是datetime类型
  14. 最近,华为应用市场上线了一个服务
  15. Teechart图表教程:Teechart的功能简介
  16. DevOps知识地图
  17. Linux系统修改网卡名称(eth1修改为eth0)
  18. unity3d显示c4d材质_纯干货:C4D从初学者到精通,其实很简单
  19. 一款完整开源的物联网基础平台
  20. background-image使用

热门文章

  1. CSS如何实现内凹角效果
  2. linux vps 桌面,linode linux vps的centos系统上安装X Window System GNOME图形桌面使用vnc连接 - 乖兔博客...
  3. 探讨Redis分布式锁解决优惠券拼抢问题
  4. linux 怎么看浏览器,Linux下浏览器比比看
  5. 命不好,因为你同床共枕的人
  6. 全息显示论文阅读笔记20210326
  7. uni-app的生命周期说明及平台差异性说明
  8. 简单说说 OSChina 的技术架构
  9. ASEMI整流桥ABS210参数,ABS210规格书,ABS210特征
  10. 滑铁卢大学计算机专业就业,克服艰难 收获滑铁卢大学计算机专业offer