如何以编程方式将 class 或伪 class 添加到 JavaFX 中的自定义控件?

How to add class or pseudoclass programmatically to custom control in JavaFX?

在JavaScript世界中,常设置元素class来表示它的外观,后来由CSS定义。

JavaFX 也是这样吗?

例如,如果我想在 TableView cells? I would not code color directly 中将负值着色为红色,但将一些 class 分配给单元格,例如 "negative",然后将其着色为红色怎么办CSS.

我找到了 PseudoClass class。它是为此而设计的吗?标记为"since 8",请问还有更成熟的API吗?

如果您想向 Node 添加可以打开和关闭的样式,PseudoClass 确实是正确的方法。它确实是在JavaFX 8.0中添加的,但那是当前的稳定版本,所以它是一个成熟的API。请注意,这会创建伪class(CSS 中的:classname),而不是"normal" class(CSS 中的.classname) .

如果你有一个你想要设置样式的节点(我们称之为 node),你可以像这样使用 PseudoClass:

node.pseudoClassStateChanged(PseudoClass.getPseudoClass("negative"), true);

做同样的事情,除了用 false 作为第二个参数,再次关闭它。