2013-02-19 98 views
0

我尝试使用下面的CSS高亮文本

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

而且unhighlight使用设置了JavaFX标签文本为绿色的文字背景下

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

然而,这些不大部分时间都不适用,因为它必须背靠背进行。

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

回答

1

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

对于某些样式(如文本填充)是的。对于背景颜色,背景图像,边框等,在JavaFX 8发布之前API方法将不可用(请参阅JavaFX问题跟踪器中的Public API for Region backgrounds and borders以获取更多信息 - 任何人都可以注册访问)。

这些在大部分时间里都不起作用,因为它必须连续进行。

如果只突出一个标签,然后unhighlight它无需再次使用类似一个PauseTransition给用户一些时间来看到高亮显示的标签,然后从用户的角度来看,没有什么会发生,因为所有用户将会看到的是一个不引人注目的标签。


不知道你的使用情况,但如果你只是想突出一个标签中的文本的一部分,或者让用户突出显示鼠标的文本,那么你可以使用一个TextField与编辑设置为false 。


可能的解决方法

如果Java 8 preview不为你工作,你遇到由于做了JavaFX CSS处理错误,然后尝试将一个窗格,然后标签的StackPane内部错误。将窗格的背景颜色设置为label.setStyle("-fx-background-color:rgba(85, 255, 68,0.7););将窗格的首选宽度和高度绑定到标签的宽度和高度,并根据需要在窗格上切换setVisible。

+0

我正在使用Java7 u 13.问题有时当文本已被高亮显示并且用户单击某个按钮以再次高亮显示时,高亮消失。这个动作发生在延迟的情况下,效果很好。我需要以编程方式突出显示karioke种类的应用程序 – SoulMan 2013-02-20 05:43:16

+0

在答案中详细说明潜在解决方法。 – jewelsea 2013-02-20 06:09:32

+0

谢谢面板会过度杀死我,因为这些是自由流动的包装文本。无论如何感谢您的建议。我正在定位为我工作的workarround作为回答下面的 – SoulMan 2013-02-23 17:53:16

0

最后我找到了workarround。我不得不给出一个PauseTransition给系统一段时间在高亮和高亮之间。如果标签已被突出显示,CSS仅在暂停事件发生后才显示效果。我认为这可能是一个错误。我将提交一份吉拉。转换的持续时间可能低至1毫秒,从用户的角度来看没有滞后。