我经常想对 JavaFX 组件进行一些简单的样式设置,例如更改树形表单元格的背景。我找不到其他替代方案
cell.setStyle("-fx-background-color: blue");
对于同一个表格单元格,我也想改变文本的颜色:
cell.setTextFill(Color.WHITE);
我认为编写第二个方法调用比摆弄字符串更不容易出错setStyle("???")
,更不用说使用.css
文件进行样式设置了。@jewelsea 告诉我我这里漏掉了一些东西。有人能给我提示吗?
几乎所有 CSS 属性都与相应对象中的属性相对应,尽管命名并不总是相同的。您可以使用文档来发现相应的 Java 属性。
在此特定情况下,请注意
-fx-background-color
是的 CSS 属性Region
。 参考Javadocs,Region
您将看到有一个background
属性需要类型为的参数Background
。 在 JavaFX 18 及更高版本中,您可以使用静态便捷方法Background.fill(...)
根据特定填充(例如颜色)创建背景。所以
将得到期望的结果。
虽然关于 CSS 缺少编译时检查的评论很有道理,但使用 CSS 来设计应用程序的样式还是有一些好处值得考虑的。首先,它提供了样式和布局之间的清晰分离,这在纯 Java 代码中很难实现。其次,它允许您在一个地方全局设计应用程序的样式(
.tree-table-cell
例如,只需在 CSS 文件中设置一条规则,而不是在每个单元工厂中重复调用)。在 Java 中复制此功能需要实现一些相当复杂的工厂模式来创建 UI 组件。第三,使用 CSS 可以让您以相当快速和简单的方式提供应用程序“主题化”,这在纯 Java 中也很难实现。一般来说,我建议使用外部样式表来设计您的应用程序的样式。