一些 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 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章