【问题标题】:How to add class or pseudoclass programmatically to custom control in JavaFX?如何以编程方式将类或伪类添加到 JavaFX 中的自定义控件?
【发布时间】:2016-09-01 12:50:29
【问题描述】:

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

JavaFX 中是这样吗?

例如,如果我想在TableView 单元格中将负值涂成红色怎么办?我不会code color directly,而是给一个单元格分配了一些类,比如“负数”,然后用CSS将它涂成红色。

我找到了PseudoClass 类。它是为此而设计的吗?它被标记为“since 8”,那么有没有更成熟的API呢?

【问题讨论】:

    标签: java css javafx pseudo-class


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 为了提高效率,PseudoClass 可能应该存储在 static final 字段中,但还是很好的答案...
    • 关键是:不是“普通”类(CSS中的.classname)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多