一些 CSS 属性在 JavaFX 2.1 中无法正常工作

Posted

技术标签:

【中文标题】一些 CSS 属性在 JavaFX 2.1 中无法正常工作【英文标题】:Some CSS attributes not working well in JavaFX 2.1 【发布时间】:2012-06-13 16:54:32 【问题描述】:

我不确定是不是我,没有使用正确的属性来通过 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 中修复了,但我想我应该指出这一点,因为它是非常基本的东西。

【问题讨论】:

您是否仅尝试过#pill-left .label。因为我认为标签或节点不存在“:selected”伪类。 是的,我试过了,还有很多其他的方法都没有成功 只是好奇您如何在代码中使用“pill-left”? 只需使用.text 而不是.label 【参考方案1】:

95% 确定这是一个错误。

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

【讨论】:

betaman 发布的示例是一个标签 css 选择器,-fx-text-fill 应该适用于标签。 -fx-fill 用于形状节点 - 文本是形状,但标签不是。 @jewelsea“应该工作”是的,这可能是一个错误。但规格。关于 CSS 来自 JavaFX 2.0,所以事情可能已经改变。也就是说,我的回答是解决方法。 (我编辑了我的非错误假设) JavaFX css 2.1 规范目前位于docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cs-s-ref.html(这是我获取信息的地方)。 @jewelsea 重新编辑。无论如何,workarround 工作正常。 @eversor 我尝试了您的解决方法,但它对我不起作用:(。我找不到更改标签颜色的方法,无论是选中还是未选中。【参考方案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 以外的任何东西来指定一些属性,例如文本颜色。

【讨论】:

以上是关于一些 CSS 属性在 JavaFX 2.1 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

javafx中每个.css文件和行的“未知属性”警告

JavaFX CSS 错误(属性样式表不存在)

JavaFX CSS 在运行时更改自定义样式类的属性

JavaFX 节点部分边框

Javafx:如何在 css 中更改 .chart-legend-item-symbol 的大小?

javaFX中是不是有等效的枚举属性类型?