当您是像我这样来自Swing的UI开发人员时,您很有可能仍在代码中直接设置图像/图标。 最可能是这样的:

import javafx.scene.control.Label;
import javafx.scene.image.ImageView;public class MyLabel extends Label {public MyLabel() {setGraphic(new ImageView(MyLabel.class.getResource("image.gif").toExternalForm()));}
}

在此示例中,通过Class.getResource()查找图像文件,将URL传递到ImageView节点的构造函数,并且将该节点设置为标签上的“ graphic”属性。

这种方法效果很好,但是使用JavaFX则有更优雅的方法。 您可以将图像定义放入CSS文件中,以便您和/或其他人轻松替换它(营销部门已决定再次更改公司标识)。

可以通过以下方式获得与上述相同的结果:

import javafx.scene.control.Label;public class CSSLabel extends Label {public CSSLabel() {getStyleClass().add("folder-icon");}
}

现在您显然也需要一个CSS文件:

.folder-icon {-fx-graphic: url("image.gif");
}

并且在您的应用程序中,您需要将样式表添加到场景图。 在这里,我们将其添加到场景中。

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.stage.Stage;public class MyApplication extends Application {public void start(Stage primaryStage) throws Exception {CSSLabel label = new CSSLabel();label.setText("Folder");label.setAlignment(Pos.CENTER);Scene scene = new Scene(label);scene.getStylesheets().add(MyApplication.class.getResource("test.css").toExternalForm());primaryStage.setScene(scene);primaryStage.setTitle("Image Example");primaryStage.setWidth(250);primaryStage.setHeight(100);primaryStage.show();}public static void main(String[] args) {launch(args);}
}

使用这种方法,您可以将控件及其外观完全分开,并且还可以轻松进行自定义。

翻译自: https://www.javacodegeeks.com/2014/07/javafx-tip-12-define-icons-in-css.html

JavaFX技巧12:在CSS中定义图标相关推荐

  1. javafx中css选择器_JavaFX技巧12:在CSS中定义图标

    javafx中css选择器 当您是像我这样来自Swing的UI开发人员时,您很有可能仍在代码中直接设置图像/图标. 最可能是这样的: import javafx.scene.control.Label ...

  2. CSS中定义多个链接样式,在CSS中定义【导航栏】超链接样式

    1.案例css代码 .divcss5 a:link{ color:#F00}/* 链接默认为红色 */ .divcss5 a:hover{ color:#000}/* 鼠标悬停黑色 */ .divcs ...

  3. css中的代码图标,认识CSS中字体图标(示例代码)

    前端之HTML,CSS(十一) 字体图标 使用文字做出小图标的效果并超越了小图标应用精灵图,使得图标变得灵活,减少了请求次数,优化了界面的性能.字体图标本身为矢量图. 字体图标的使用过程 1.UI设计 ...

  4. 在CSS中定义a:link、a:visited、a:hover、a:active顺序

    摘自:http://www.qianyunlai.com/post-2.html 以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料,发现很 ...

  5. 【经验】在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序

    以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料,发现很多人问到这个问题,给出的结果我试了试,大部分都不正确. 给出我试的顺序,可能会对大 ...

  6. css中的图标字体的实现方案及原理和工具使用

    方案一:利用background-position,专用名词 CSS Sprite(没啥意思就是记不住这个名字)懂原理就好. 要是面试的问我这个我肯定忘了这个单词了.. 这个也是解决前端资源优化的一种 ...

  7. css中定义超级链接的样式

    CSS中用四个伪类来定义链接的样式,分别是:a:link.a:visited.a:hover和a : active,例如: a:link{font-weight : bold ;text-decora ...

  8. css中审核图标,一个简单实用的css loading图标

    摘要 在web开发中,为了提高用户体验,在加载数据的时候都会给一个loading的提示. Html .cssload-container { width: 24px; height: 24px; po ...

  9. 如何在内嵌 css 中编写: hover_优秀 CSS 代码的 8 个编写技巧!

    这篇文章的目的不在于规则手册,而在于你正在编写CSS时的指南.希望能帮助大家找到自己的流程,而这篇文章的目标是让你的CSS一致,简单,易于使用. 编写基本的CSS和HTML是我们作为Web开发人员学习 ...

最新文章

  1. YII2 models非常好用的控制输出数据【重写Fields】
  2. dubbo Trace 日志追踪
  3. optee3.12.0 qemu_v8的环境搭建篇(ubuntu20.04)
  4. SPI动态加载配置文件
  5. Java设计模式笔记(7)适配器模式
  6. Bootstrap下拉菜单dropdown组件的使用
  7. 关于huihoo的一些意见和建议(转贴自Huihoo社区)
  8. JavaScript 的 defer 与 async
  9. mysql主从错误1007_mysql主从错误:1032
  10. 破解lockdir的加密文件
  11. 虚拟机器人(巡线竞速)
  12. GNU Radio Pythpn
  13. 移动金融客户端应用软件备案、中国支付清算协会“聚合支付”业务备案、工业和信息化部网站备案系统(ICP备案)
  14. JAVA工作日历天数(工作日/非工作日)- 基于法定节假日
  15. 输入一个整数n,统计1-n之间的奇数和。你有几种办法实现?
  16. 视频工厂分享vlog拍摄技巧
  17. c语言 m文件是什么,M文件扩展名 - 什么是.m以及如何打开? - ReviverSoft
  18. C++实现输出一个集合的全部子集
  19. 虚拟机VMWare Workstation最新官方原版 有效VMware7.1.4序列号 密钥 VMware7.1.4破解版破解方法 VMware7.1
  20. MySQL的yum源

热门文章

  1. hibernate的lazy的使用
  2. Error:(1, 10) java: 需要class, interface或enum
  3. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器
  4. java集合——视图与包装器
  5. spring-junit4_基于Spring的应用程序-迁移到Junit 5
  6. servlet异步_关于Servlet和异步Servlet
  7. primefaces_使用WildFly 8.2.0.Final,Primefaces 5.1和MySQL 5的JDBC领域和基于表单的身份验证...
  8. 工程模式和抽象工厂模式_功能工厂模式
  9. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...
  10. undertow服务器分析_使用undertow构建和测试Websocket服务器