作为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() {

@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()即可应用idstyles。

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

java fx 皮肤_JavaFX 皮肤功能相关推荐

  1. java fx 教程_JavaFX快速入门

    1- 前提条件 在本文中,将学习如何在 Eclipse IDE 开发和执行JavaFX编程. e(fx)eclipse e(fx)eclipse是一组工具和必要的库,它们帮助您执行JavaFX编程,确 ...

  2. java fx配置_JavaFX系列-配置开发环境

    JavaFX系列-配置开发环境 本文主要介绍JavaFX环境的搭建和如何部署JavaFX应用 添加JavaFX依赖 在工程 build.gradle 中加入以下内容: plugins { id 'ap ...

  3. java fx输出_JavaFX中具有输入和输出参数的并发后台任务或服务

    宁愿这是一个非常简单的概念,但是由于我对JavaFX的并发性完全陌生.我一直在努力理解这个概念. 在构建一个非常简单的JavaFX应用程序时,我想在后台执行一些冗长的任务,并使UI免受冻结. 在下面的 ...

  4. java fx 事件处理_JavaFX - 事件处理( Event Handling)

    JavaFX - 事件处理( Event Handling) 在JavaFX中,我们可以开发GUI应用程序,Web应用程序和图形应用程序. 在这样的应用程序中,每当用户与应用程序(节点)交互时,就说事 ...

  5. java swing substance_java swing皮肤使用(substance)

    java swing默认的皮肤看起来有点土,可以通过更换皮肤来使自己的界面更加美观. 1.下载java皮肤包,推荐substance,里面已经提供了多种主题可供选择. 2.将皮肤包jar文件加载进项目 ...

  6. java 8 新功能详解_Java 8和Java 14之间的新功能

    java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...

  7. Java 8和Java 14之间的新功能

    从版本9开始,Java每6个月就会有新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近两个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用的不是Java的最新版本,而 ...

  8. java fx:ria_虚拟小组讨论:RIA的当前和未来状态

    java fx:ria InfoQ最近通过电子邮件对RIA和Ajax技术的当前和未来状态进行了虚拟小组讨论. 该小组为社区提供了许多有价值的贡献者: Dion Almaer-Mozilla Corpo ...

  9. 【java】java自带的java.util.logging.Logger日志功能

    偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...

最新文章

  1. Linux 重新挂载分区的方法
  2. 思科网络基础课件_上海思科CCNA培训、思科网络工程师培训
  3. POJ 3991 Seinfeld
  4. CMake file文件操作命令
  5. 背景图片-密度屏幕(移动端)
  6. php案例之后台数据显示-- PDO版(php data object)
  7. 价值1680元的python实战全套教学视频
  8. 网络课大学计算机基础考试,《大学计算机基础》课程期末考试笔试说明
  9. OSPF和ISIS协议的异同
  10. 基于PHP的简易教务管理系统
  11. 为什么员工辞职时,领导都要象征性挽留一下?
  12. CAD等高线转地形高程散点
  13. 音频基础之麦克风、功放、扬声器
  14. php正则怎么用,php正则及常用正则函数怎么用
  15. fisher information 的直观意义
  16. REST API 设计
  17. android 局部tab页,安卓TabLayout+ViewPager实现切页
  18. java long 变date_long类型转换成日期 LongToDate
  19. keytool生成keystore、truststore、证书
  20. 阿里云域名相关操作(购买、解析、备案)

热门文章

  1. JDK线程池CompletionService的使用
  2. flex弹性布局笔记
  3. java自定义注解实现日志功能
  4. request.getContextPath()取不到值
  5. 计算机指令执行与时序逻辑,时序逻辑系统
  6. String(min)
  7. Java 故障处理与性能监控工具
  8. mysql截取字符串最后两位_MySQL字符串函数substring:字符串截取
  9. 设计模式---工厂模式
  10. 怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...