2012-06-13 45 views
2

工作好,我不知道,如果是我,這是沒有使用正確的屬性通過CSS樣式控制。但是今天我測試了Ensemble應用程序中的一個例子,並注意到它在那裏也沒有工作。一些CSS屬性在JavaFX的2.1

一個我覺得最困難的設定權:-fx文本填充 如更改標籤的文本顏色:

#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中得到了解決,但我想我應該指出,因爲它是非常基本的東西。

+0

您是否試過'#pill-left .label {}'而已。因爲我認爲標籤或節點沒有「:selected」僞類。 –

+0

是的,我試過了,還有很多沒有成功的東西 – betaman

+0

只是好奇你怎麼在你的代碼中使用「藥丸左」? –

回答

2

好了,經過一番廣泛的測試的workarround,我設法使它工作使用樣式表。

關鍵是要除去.label屬性和只使用控制的ID,附加的狀態(:懸停:選擇等)根據需要。

#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"); } 

由於這是基於直接從集成項目中直接取得的代碼示例,我們假定它是正確的。許多程序員會像我在這個問題上那樣發現自己拉扯頭髮。

總之,這是關於如何使用樣式表JavaFX的一個重要教訓,避免在可以使用別的比ID來指定,如文本顏色的某些屬性。

5

95%肯定這是一個錯誤。

你需要使用-fx-fill: red;,而不是-fx-fill-text

+0

betaman發佈的示例是標籤CSS選擇器,-fx-text-fill應該用於標籤。 -fx-fill用於Shape節點 - 文本是形狀,但Label不是。 – jewelsea

+0

@jewelsea「應該工作」是的,這可能是一個錯誤。但規格。關於CSS來自JavaFX 2.0,所以事情可能已經改變。也就是說,我的回答是workarround。 (我編輯我的非錯誤的假設) – eversor

+0

JavaFX的CSS 2.1規範目前位於http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html(這是哪裏我從中得到了我的信息)。 – jewelsea