JavaFX - 禁用标签的背景显示

4

使用JavaFX,我希望显示一个带有定义的背景颜色的Label(当禁用时,我的Label的背景变成透明),我尝试了下面的代码,但仍然无法实现...你有什么提示吗?-另一个线程告诉我要做一个setEditable(false),但这种方法在我的情况下不合适。

FXML:

<Label styleClass="disable_backgrounded" layoutX="32.0" layoutY="23.0" prefHeight="25.0"
       style="-fx-background-color: rgb(252,252,252);-fx-padding: 5px;" text="General" textFill="#aa0000">
           <font>
                <Font name="System Bold" size="14.0"/>
           </font>
</Label>

CSS:

.disable_backgrounded:disabled {
    -fx-background-color: rgb(252,252,252);
}
1个回答

3
您之所以遇到这个问题,是因为:disabled控件的-fx-opacity属性默认设置为0.4
您可以将选择器更正为:
.disabled-label:disabled {
    -fx-background-color: rgb(252,252,252);
    -fx-opacity: 1;
}

这将展示带有所需背景颜色的禁用 Label,但由于去除了不透明度,文本颜色将与非禁用标签相同。
一个解决方法是通过使用 rgba 定义不透明度,直接为禁用选择器设置 -fx-text-fill 属性。
.disabled-label:disabled {
    -fx-background-color: rgb(252,252,252);
    -fx-opacity: 1;
    -fx-text-fill: rgba(170, 0, 0, 0.4);
}

这是使用0.4 alpha定义的#aa0000的RGB版本:rgba(170, 0, 0, 0.4)
参考文献:JavaFX CSS参考手册:RGB颜色部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接