2017-08-31 162 views
0

我想在一個CSS中製作2種不同樣式的按鈕。因此,創建第二個按鈕,當我使用添加類吧:JavaFX子類僞類

close.getStyleClass().add("close-button"); 

所以現在我可以通過CSS參考此按鈕:

.button.close-button 

但現在我不知道如何引用按鈕時的僞類使用.close-button類。

我試圖通過

.button.close-button:selected 

.button:selected.close-button 

也不這些似乎工作的訪問它。有沒有辦法如何做到這一點?或者我必須爲.close-button類創建自己的僞類,並在代碼中的btton的偵聽器中添加和刪除它們?

我使用創建按鈕:

Button close = new Button("X"); 
close.getStyleClass().add("close-button"); 
close.setOnAction((event) -> { 
    .... 
}); 

比我將其添加到佈局: HBox中的hbox =新HBox中(rbSelect,標籤,窗格中,接近);

我的CSS是這樣的:

.button { 
    ... 
} 

.button.close-button { 
    -fx-background-color: #E81123; 
} 

.button:selected.close-button { 
    -fx-background-color: greenyellow; 
} 

的按鈕看起來是這樣的: Button not clicked

當我點擊它: enter image description here

好像什麼也沒有發生,我會期待按鈕將顏色更改爲greenyellow

+0

我認爲這應該工作喲描述第一種方式。你能提供一個[MCVE]顯示這個問題嗎? – Itai

+0

看看我編輯的答案。 –

+0

對我感到羞恥我想我出....所有的時間我使用錯誤的子類... –

回答

1

我不是100%確定這是必要的,但是按照慣例,僞類選擇器類選擇後添加:

.button.close-button:selected { 
    -fx-background-color: greenyellow; 
} 

但是沒有用於Button沒有selected僞類。它可用於CheckBoxToggleButton,但不適用於常規的Button s。可用的僞古銅是:pressed:hover,see css reference

你當然可以自己添加的僞類,假設你使用JavaFX 8:

PseudoClass selected = PseudoClass.getPseudoClass("selected"); 

close.setOnAction((event) -> { 
    .... 
    close.pseudoClassStateChanged(selected, true); 
});