0

我正在尝试使用以下 CSS 将 JavaFx 标签文本的文本背景设置为绿色

label.setStyle("-fx-background-color:rgba(85, 255, 68,0.7););

并使用以下内容取消突出显示

label.setStyle("-fx-background-color:rgba(0,0,255,0);");

然而,当它必须背靠背完成时,这些方法在大多数情况下都不起作用。

有没有办法在不使用 CSS 的情况下设置样式,即使用 JavaFx API 本身。我发现 label.textFill(Paint p) 用于文本颜色,但没有找到背景颜色,即标签本身的颜色。

4

2 回答 2

1

有没有办法在不使用 CSS 的情况下设置样式,即使用 JavaFx API 本身。

对于某些样式(如文本填充)是的。对于背景颜色、背景图像、边框等 API 方法在 JavaFX 8 发布之前将不可用(有关更多信息,请参阅JavaFX 问题跟踪器中的区域背景和边框的公共 API - 任何人都可以注册访问)。

这些在大多数情况下都不起作用,因为它必须背靠背完成。

如果您只是突出显示一个标签,然后再次取消突出显示它,而不使用像PauseTransition之类的东西来给用户一些时间来查看突出显示的标签,那么,从用户的角度来看,什么都不会发生,因为用户将看到的只是一个未突出显示的标签.


不确定您的用例,但如果您只想突出显示标签中的部分文本或让用户用鼠标突出显示文本,那么您可以使用可编辑设置为 false的TextField 。


可能的解决方法

如果Java 8 预览版不适合您,并且由于 JavaFX CSS 处理中的错误而遇到错误,请尝试在 StackPane 中放置一个窗格,然后放置一个标签。设置窗格的背景颜色以label.setStyle("-fx-background-color:rgba(85, 255, 68,0.7););将窗格的首选宽度和高度绑定到标签的宽度和高度,并根据需要在窗格上切换 setVisible。

于 2013-02-19T18:23:46.977 回答
0

最后我找到了解决方法。我必须给一个PauseTransition让系统在取消突出显示和突出显示之间有一些时间。如果标签已经突出显示,CSS 只有在 pausetransaction 之后才会显示效果。我认为这可能是一个错误。我会提交一个jira。暂停转换的持续时间可能低至 1 毫秒,因此从用户的角度来看没有滞后。

于 2013-02-23T17:55:55.117 回答