2

我不确定是不是我,没有使用正确的属性来通过 CSS 设置控件样式。但是今天我测试了 Ensemble 应用程序中的一个示例,发现它也无法正常工作。

我发现最难设置的一个是: -fx-text-fill 更改标签的文本颜色,例如:

#pill-left:selected .label {
 /* -fx-text-fill: black; */
 -fx-text-fill:red;
 -fx-effect: dropshadow( one-pass-box , white , 0, 0.0 , 0 , 1 );
}

无论我放什么,文本总是使用默认值颜色。

我正在使用 JavaFx 2.1。也许这已经在 2.2 中修复了,但我想我应该指出这一点,因为它是非常基本的东西。

4

2 回答 2

5

95% 确定这是一个错误。

您需要使用的解决方法,-fx-fill: red;而不是-fx-fill-text

于 2012-06-13T17:01:34.417 回答
2

好的,经过一些广泛的测试,我设法使用 StyleSheets 使其工作。

关键是删除.label属性并仅使用控件的 ID,并根据需要附加状态(:hover:selected等)。

    #pill-left {
    -fx-padding: 5;
    -fx-text-fill:red;
    -fx-border-image-source: url("left-btn.png");
    -fx-border-image-slice: 4 4 4 4 fill;
    -fx-border-image-width: 4 4 4 4;
    -fx-border-image-insets: 0;
    -fx-border-image-repeat: stretch;
    -fx-background-color: null !important; 
}

#pill-left:hover, #pill-left:hover:selected { -fx-text-fill:blue; }
#pill-left:selected { 
    -fx-text-fill:green;
    -fx-border-image-source: url("left-btn-selected.png"); }

由于这一切都基于直接取自 ensemble 项目的代码示例,因此我们认为这是正确的。许多程序员会发现自己像我一样在这个问题上拉头发。

无论如何,这是关于如何将 styleSheets 与 Javafx 一起使用的重要一课,尽可能避免使用 ID 以外的任何内容来指定某些属性,例如文本颜色。

于 2012-06-14T09:56:52.763 回答