gpt4 book ai didi

javafx-2 - JavaFX TableView : Cannot Override '-fx-text-fill' !

转载 作者:行者123 更新时间:2023-12-02 03:43:48 24 4
gpt4 key购买 nike

在 JavaFX2.2 上,我创建了自己的样式类来表示包含无效数据的表格单元格。但是我的样式类似乎无法在 hoverselectedfocused 中覆盖 -fx-text-fill状态。这是我的样式类:

.invalid-table-cell {
-fx-text-fill: red;
}

.invalid-table-cell:hover {
-fx-background-color: salmon;
-fx-text-fill: blue; /* No worky */
}

.invalid-table-cell:selected {
-fx-background-color: purple;
-fx-text-fill: orchid; /* No worky */
}

.invalid-table-cell:focused:hover {
-fx-background-color: red;
-fx-text-fill: green; /* No worky */
}

当我的应用程序运行时,我可以看到 -fx-background-color 的变化,但我没有看到任何 -fx-text-fill 的变化特殊状态。

我做错了什么?

最佳答案

!important 可能是必需的,因为 specificity of your css rules与默认的里海或摩德纳样式表的 css 规则相比(尽管我的 css 技能在评估方面有限)。

SceneBuilder 1.1 有一个 css analyzer这可以帮助确定正在激活哪些 css 规则和属性。这通常有助于调试 css 规则激活,但不幸的是,在这种特定情况下它没有太大帮助,因为您无法通过 SceneBuilder 1.1 设置表格单元格的样式。

一种变通方法是从 modena 或 caspian css 复制所有 TableView css 规则(不幸的是有很多)并将规则放在用户样式表中。将样式选择元素 .invalid-table-cell 添加到用户样式表中的每个表格 css 规则,并根据需要修改规则以实现所需的外观。这将确保您的规则集具有正确的特异性级别以覆盖默认规则。不幸的是,这是一个相当艰巨的过程,也许您的 !important 覆盖可能是对您来说更好的解决方案。

自定义样式的一种更简单的方法是覆盖预定义的常量,例如下面的内容(我没有尝试过,只是演示了一个原则,因为所需的确切选择器和规则可能不同):

.invalid-table-cell {
-fx-selection-bar-text: goldenrod;
}

由于许多默认表格单元格样式是使用 -fx-text-fill: -fx-selection-bar-text; 定义的,只需将此值设置为适当的值即可覆盖所有这些默认的表格单元格样式。但它会将它们全部覆盖为相同的值,因此如果您像问题中那样需要不同的 css 伪状态的不同值,那么您将需要如前所述明确定义这些规则。

关于javafx-2 - JavaFX TableView : Cannot Override '-fx-text-fill' !,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390152/

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