TornadoFx中的css美化
原文地址:TornadoFx中的css美化 - Stars-One的杂货小窝
TornadoFx中使用类重新对css进行了封装,所以可以用代码的形式来书写样式
说明
除了Text,其他的若是要修改文字颜色,css的属性均为textFill,而不是fill
换行:
Text 设置wrapWidth
Label 设置isWrapText属性
示例(JavaFx -> TornadoFx)
下面的示例中将常规的JavaFx的样式转为对应的TornadoFx的css样式,主要是对原本JavaFx中的进度条进行了美化
.progress-bar {
-fx-indeterminate-bar-length: 60;
-fx-indeterminate-bar-escape: true;
-fx-indeterminate-bar-flip: true;
-fx-indeterminate-bar-animation-time: 2;
}
/*进度条颜色*/
.progress-bar > .bar {
-fx-background-color: #37C796;
-fx-background-insets: 3 3 4 3;
-fx-background-radius: 2;
-fx-padding: 0.75em;
}
.progress-bar:indeterminate > .bar {
-fx-background-color: linear-gradient(to left, transparent, -fx-accent);
}
/*背景*/
.progress-bar > .track {
-fx-background-color:#292E48;
}
下面即TornadoFx中定义的样式
class Styles : Stylesheet() {
companion object {
val progressStyle by cssclass("progress-bar")
}
init{
progressStyle {
indeterminateBarLength = 60.px
indeterminateBarEscape = true
indeterminateBarFlip = true
indeterminateBarAnimationTime = 2
select(".bar") {
backgroundInsets+=box(3.px,3.px,4.px,3.px)
backgroundRadius+= box(2.px)
padding= box((0.75).em)
}
and(indeterminate){
select(".bar"){
backgroundColor+=LinearGradient(0.0,0.0,1.0,0.0,true,CycleMethod.NO_CYCLE, Stop(0.0,c("black")),Stop(1.0,c("red")))
}
}
select(".track"){
backgroundColor+=c("#292E48")
}
}
}
}
PS: 上述的代码,是直接覆盖了原来的progressbar的样式
如果是单独用View打开测试,需要在View里加上加载style的代码
importStylesheet(Styles::class)
如果是直接启动了Application,则不需要了,之后再你使用progressbar的时候,样式都会直接变成上述设置的样式了

效果:

动态主题切换
暂时还没有深入研究,下面代码是复制了某位大佬的记录

import javafx.scene.paint.Color
import javafx.stage.Stage
import tornadofx.*
import kotlin.reflect.KClass
class LearnApp : App(ThemeView::class){
val themeController: ThemeController by inject()
override fun start(stage: Stage) {
super.start(stage)
// Make sure we initialize the theme selection system on start
themeController.start()
}
}
class ThemeController : Controller() {
// List of available themes
// val themes = listProperty<KClass<out Stylesheet>>(listOf(LightTheme::class, DarkTheme::class).asObservable())
val themes = listProperty(listOf(LightTheme::class, DarkTheme::class).asObservable())
// Property holding the active theme
val activeThemeProperty = objectProperty<KClass<out Stylesheet>>()
var activeTheme by activeThemeProperty
fun start() {
// Remove old theme, add new theme on change
activeThemeProperty.addListener { _, oldTheme, newTheme ->
oldTheme?.let { removeStylesheet(it) }
newTheme?.let { importStylesheet(it) }
}
// Activate the first theme, triggering the listener above
activeTheme = themes.first()
}
}
class ThemeView : View("更换主题颜色样式") {
val settings: ThemeController by inject()
override val root = form {
fieldset("Theme") {
field {
vbox(10) {
togglegroup {
// One radio button for each theme, with their value set as the theme
settings.themes.forEach { theme ->
radiobutton(theme.simpleName, value=theme)
}
// The toggle group value is bound to the activeThemeProperty
bind(settings.activeThemeProperty)
}
}
}
buttonbar {
button("Close").action(this@ThemeView::close)
}
}
prefWidth=300.0
prefHeight=300.0
}
}
// Two themes for completeness
class DarkTheme : Stylesheet() {
init {
root {
backgroundColor += Color.DARKGREEN
}
}
}
class LightTheme : Stylesheet() {
init {
root {
backgroundColor += Color.LIGHTCYAN
}
}
}
参考
- Gradiant CssRule · Issue #1246 · edvin/tornadofx
- LinearGradient (JavaFX 8)
- JavaFX 颜色线性渐变_haoranhaoshi的博客-CSDN博客
- tornadofx更换主题颜色样式_chulv4817的博客-CSDN博客
TornadoFx中的css美化的更多相关文章
- CSS美化页面滚动条
文章来自:http://www.webhek.com/scrollbar 本文将会告诉你如何用CSS修改/美化浏览器页面上出现的滚动条.改变它们的颜色,调整它们的外形,适配你对页面UI设计.我们首先将 ...
- css美化页面
css美化页面 如果在我们一行文字中,想让某个文字凸显出来,使用span! 1.字体样式 font-style:字体的风格 italic normal font-weight:字体的粗细 normal ...
- CSS美化自己的完美网页
CSS美化自己的完美网页 CSS概述 css样式: css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化,CSS的可以使页面更加的美观.基本上所有的h ...
- 学习笔记 第十章 使用CSS美化表单
第10章 使用CSS美化表单 [学习重点] 正确使用各种表单控件 熟悉HTML5新增的表单控件 掌握表单属性的设置 设计易用性表单页面 10.1 表单的基本结构 表单包含多个标签,由很多控件组成 ...
- 学习笔记 第九章 使用CSS美化表格
第9章 使用CSS美化表格 学习重点 正确使用表格标签: 设置表格和单元格属性: 设计表格的CSS样式. 9.1 表格的基本结构 表格由行.列.单元格3部分组成,单元格时行与列交叉的部分. 在HTM ...
- 学习笔记 第八章 使用CSS美化列表
第8章 使用CSS美化列表 8.1 列表的基本结构 在HTML中,列表结构可以分为两种基本类型:有序列表和无序列表.使用标签如下: <ul>...</ul>:标识无序列表: ...
- 学习笔记 第七章 使用CSS美化超链接
第7章 使用CSS美化超链接 学习重点 认识超链接 熟悉伪类 定义超链接样式 能够灵活设计符合页面风格的链接样式 7.1 定义超链接 在HTML5中建立超链接需要两个要素:设置为超链接的网页元素和 ...
- 学习笔记 第六章 使用CSS美化图片
第六章 使用CSS美化图片 6.1 在网页中插入图片 GIF图像 跨平台能力,无兼容性问题: 具有减少颜色显示数目而极度压缩文件的能力,不会降低图像的品质(无损压缩): 支持背景透明功能,便于图像 ...
- 学习笔记 第五章 使用CSS美化网页文本
第五章 使用CSS美化网页文本 学习重点 定义字体类型.大小.颜色等字体样式: 设计文本样式,如对齐.行高.间距等: 能够灵活设计美观.实用的网页正文版式. 5.1 字体样式 5.1.1 定义字体 ...
- css美化Div边框的样式实例*(转载)
css美化Div边框的样式实例 很多时候如果不是用了很多样式,很难把边框修饰得好看,看了一篇博文,觉得真的挺漂亮,也挺好看. 转载的博文地址 将这段美化的css代码 border:1px soli ...
随机推荐
- 基于AvaloniaUI开发跨平台.NET三维应用:环境搭建
本文介绍在Vistual Studio 2022中使用Avalonia和集成AnyCAD AvaloniaUI三维控件的的过程. 目录 0 初始化环境 1 创建项目 2 集成AnyCAD Avalon ...
- 程序设计实验第一学期期末考试复习用源代码【C语言深度解剖】【超详细注释】
有关此篇 在这里博主先告诉大家,博主在学校学的C语言课本是<谭浩强的C语言>那这本红色的书. 博主到期末阶段是学到了结构体那一章,下面是博主的复习代码,是一些比较有编程思想的一些源代码,博 ...
- CF1515F Phoenix and Earthquake 题解
题目链接:CF 或者 洛谷 首先基于一个事实,答案一定是生成树,显然,每次我们都需要连边,每次都会 \(-x\),那么一共会减少 \((n-1)\times x\),很显然的一个必要条件为: \[\s ...
- 探索C语言的数据类型:解密编程世界的核心秘密
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 常量与变量 1.1 常量 (1) 常量的概念 常量顾名思义就是无法改变的量,比如一周 ...
- 不同网段之间实现GDB远程调试功能
前言 在开发过程中,使用gdb远程调试时,会碰到 Linux 服务器的网段和板载设备的网段不是一样的,不能正常使用 gbd 远程调试功能. 板载设备和电脑连接路由器,属于同一个网段,如192.168. ...
- 全世界 LoRA 训练脚本,联合起来!
来自社区的 SD-XL Dreambooth LoRA 微调最佳实践指南 太长不看版 我们把 Replicate 在 SDXL Cog 训练器中使用的枢轴微调 (Pivotal Tuning) 技术与 ...
- 好书推荐之《深入理解JAVA虚拟机》
大佬推进 这本书作为JVM的入门书籍,是每一个JAVA工程师必备的. 简介 这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也颇受欢迎. 自2011年上市 ...
- 2023年多校联训NOIP层测试7+【LGR-149-Div.3】洛谷基础赛 #2 & qw Round -1
普及模拟3 \(T1\) 最大生成树 \(100pts\) 简化题意:给定一个 \(n(1 \le n \le 1 \times 10^5)\) 个点的完全图,给定各点的点权 \(a_i(1 \le ...
- Vmware中Linux通过NAT设置静态IP实现上网
1.设置虚拟机上网方式为NAT 2.修改centos网络配置文件,我的是centos7.4,主要网关不能和主机设置的一致 [root@dylan-centos ~]# vi /etc/sysconfi ...
- 混合类Mixins介绍
介绍 混合类是封装了一些通用行为的基类,旨在重用代码.通常,混合类本身并没有什么用,仅扩展这种类也行不通 因为在大多数情况下,它都依赖于其它类中定义的方法和属性.通过多继承,可将混合类与其它类一起使用 ...