gpt4 book ai didi

java - 不使用 CSS 样式化 JavaFX 组件

转载 作者:行者123 更新时间:2023-12-01 14:24:09 25 4
gpt4 key购买 nike

是否可以在没有 CSS 的情况下设置 JavaFX 组件的样式?我的意思是:我可以实现与没有 CSS 的 CSS 相同的效果吗? “没有 CSS”我的意思是“没有 CSS 字符串”(你放在 setStyle(String) 中的东西。

通过创建新的样式字符串来更新样式对我来说似乎非常低效。要以以下样式将背景颜色动态更改为白色(事先未知),我必须将其替换为正则表达式或连接字符串。

-fx-background-color: red;
-fx-border-color: black;
-fx-border-width: 1;

我相信在内部这些字符串无论如何都会被解析为一些结构/对象,那么为什么这些结构不暴露呢?

我对 JavaFX 很陌生。我知道我可以使用 CSS 继承,但它不是 Elixir ,仍然会有一些字符串连接。

最佳答案

从 JavaFX 2.2 开始,样式的某些方面只能通过应用 css 来实现。您在问题中对区域背景颜色和边框信息的定义属于“只能通过css完成的事情”的类别。

您可以通过在 css 样式表中定义不同的样式类并操作节点的 styleclasses 来设置样式。 .这是使用 css 而不是使用 setStyle 的推荐方式。方法。您还可以更改应用于场景或节点层次结构的样式表列表。然而,这实际上只是以不同的方式使用 CSS,而不是没有 CSS 的样式。

样式的某些方面可以在 fxml 或 java 代码中完成,因为它们在 JavaFX API 中公开,例如,您可以使用 setFont 在标签上设置字体api 或 fxml 字体属性,而不是使用 css 样式将字体应用于标签 -fx-font .

在 future 的 JavaFX 版本(例如 JavaFX 8)中,许多这些东西还将具有一个公共(public) API,您可以使用它在代码中应用样式而无需使用 CSS。特别是对于 JavaFX 8.0,已经定义了新的 API,这些 API 公开了区域背景和边框样式属性以进行编程操作。见 RT-24506: Public API for Region backgrounds and borders .这应该允许您以编程方式完成您在问题中提供的示例样式。

此外,为 future 的 JavaFX 版本提议的是 CSS 信息的对象模型,以便除了当前基于字符串的 setStyle 和 getStyleClass 方法之外,还可以通过正式的 Java API 查看和操作节点上的 CSS 属性。见 RT-17293: CSS Style Object Model in Java .如果您对此类功能感兴趣,请为功能请求投票。

关于java - 不使用 CSS 样式化 JavaFX 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com