2017-09-22 79 views
0

我想爲應用程序中的所有按鈕設置一個背景圖像,當我通過FXML文件設置它時,它工作正常,但是當我使用CSS樣式表進行設置時,它不起作用其他一些屬性在樣式表中可以正常工作,如字體屬性。不適用於樣式表的背景屬性

這是我的樣式表代碼:

@font-face { 
    font-family: 'AdvertisingExtraBold'; 
    src: url('/fonts/AdvertisingExtraBold.ttf'); 
} 
@font-face { 
    font-family: 'Droid Arabic Kufi'; 
    src: url('/fonts/DroidKufi-Regular.ttf'); 
} 
@font-face { 
    font-family: 'Naskh'; 
    src: url('/fonts/droid-naskh.ttf'); 
} 

.label { 
    -fx-font-family: 'Kufi'; 
} 

.button .text { 
    -fx-font-family: 'AdvertisingExtraBold'; // This is working fine 
    -fx-background-image: url('shutdown.png'); // This is not 
    -fx-background-repeat: no-repeat;   // This is not 
    -fx-background-size: 40;     // This is not 
} 

但是,當我在FXML文件應用它像它下面正常工作:

<Button prefHeight="40.0" prefWidth="40" style="-fx-background-image: url('shutdown.png');-fx-background-repeat: no-repeat;-fx-background-size: 40;" /> 

這是相同的代碼,爲什麼它不工作從樣式表?

有什麼區別,爲什麼字體屬性工作,而背景圖像不是?

我成功加載樣式表這樣的:在CSS文件下列

scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 

回答

1

Button具有背景屬性;它包含的Text節點沒有。內聯樣式適用,因爲您將規則應用於按鈕。所以

.button .text{ 
    -fx-font-family: 'AdvertisingExtraBold'; 
} 
.button { 
    -fx-background-image: url('shutdown.png'); 
    -fx-background-repeat: no-repeat; 
    -fx-background-size: 40; 
} 

將工作。

+0

Loool,怎麼我沒有察覺到嗎?!非常感謝你,它的工作:) – Mohammad

+0

我可以問如何通過樣式表文件應用它針對特定的按鈕? – Mohammad

+1

@Mohammad給這個按鈕一個id並使用id作爲選擇器。 –

0

儘可能嘗試試圖重寫按鈕樣式。

-fx-background-image: url('shutdown.png') !important; 
-fx-background-repeat: no-repeat !important;   
-fx-background-size: 40 !important; 
+0

對不起,沒有工作:( – Mohammad