我正在尝试使用以下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)用于文本颜色,但没有找到背景颜色,即标签本身的颜色。
答案 0 :(得分:1)
有没有办法在不使用CSS的情况下设置样式,即使用JavaFx API本身。
对于某些样式(例如文本填充)是的。对于背景颜色,背景图像,边框等API方法在JavaFX 8发布之前将无法使用(有关更多信息,请参阅JavaFX问题跟踪器中的Public API for Region backgrounds and borders - 任何人都可以注册访问权限。)
这些在大部分时间都不起作用,必须背靠背。
如果您只是突出显示一个标签,然后在不使用PauseTransition之类的情况下再次突出显示该标签,以便让用户有时间查看突出显示的标签,那么从用户的角度来看,一切都不会发生用户将会看到一个没有突出显示的标签。
不确定您的用例,但如果您只想突出显示标签中的部分文字或让用户用鼠标突出显示文字,那么您可以使用TextField并将可编辑设置为false
可能的解决方法
如果Java 8 preview不适合您,并且由于JavaFX CSS处理中的错误而遇到错误,请尝试在StackPane中放置一个Pane然后标签。将窗格的背景颜色设置为label.setStyle("-fx-background-color:rgba(85, 255, 68,0.7););
将窗格的首选宽度和高度绑定到标签的宽度和高度,并根据需要在窗格上切换setVisible。
答案 1 :(得分:0)
最后我找到了工作场所。我不得不给PauseTransition一个系统给unighighlight和highlight之间的时间。如果标签已经突出显示,CSS仅在暂停事务后显示效果。我认为这可能是一个错误。我会提交一个jira。 paustransition的持续时间可能低至1毫秒,因此从用户的角度来看并没有滞后。