2013-02-19 107 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毫秒,從用戶的角度來看沒有滯後。