2016-10-02 230 views
0

我知道我可以通過按下僞選擇設置顏色:做點擊更改javafx按鈕顏色?

myButton:pressed{} 

問題是,我嘗試從我的樣式表覆蓋的CSS背景色要做到這一點代碼:

myButton.setStyle("fx-background-color: #FFF"); 

雖然後者失敗,但會改變顏色。難道一旦我設置我的樣式表,我不能覆蓋它?如何在點擊時更改按鈕顏色?

+0

是否要改變按顏色,然後退回到原來的顏色或你想改變第一次點擊的顏色,然後保持相同的顏色? – ItachiUchiha

+0

@IchichiUchiha首先點擊並保持。難道是因爲我在fx之前錯過了一個破折號? XD omg。我不知道這個問題是否值得刪除大聲笑 – Asperger

回答

3

我不得不做類似的事情(在這裏被簡化,也只是其更改樣式的按鈕的代碼的一部分),我這樣做,我希望這將有助於你

button.setOnAction((ActionEvent e) -> { 
    button.getStyleClass().removeAll("addBobOk, focus"); 
    //In this way you're sure you have no styles applied to your object button 
    button.getStyleClass().add("addBobOk"); 
    //then you specify the class you would give to the button 
}); 

CSS:

.addBobOk{ 
     -fx-background-color:#90EE90; 
     -fx-background-radius: 5,5,4; 
     -fx-background-insets: 0 0 -1 0,0,1; 
     -fx-effect: dropshadow(three-pass-box , rgba(0,0,0,0.4) , 5, 0.0 , 0 , 1); 
     -fx-text-alignment: center; 
} 
.addBobOk:hover{ 

     -fx-background-color:#64EE64; 
     -fx-effect: dropshadow(three-pass-box , rgba(0,0,0,0.4) , 5, 0.0 , 0 , 1); 
     -fx-text-alignment: center; 
} 
.busy{ 

     -fx-background-color:#B3B3B3; 
     -fx-text-alignment: center; 
} 
.busy:hover{ 

     -fx-background-color:cdcbcb;      
     -fx-text-alignment: center; 
} 
+1

這很不錯。謝謝。你會推薦它超過setStyle嗎? – Asperger

+0

removeAll()中的第二個參數'focus'是什麼? –

+0

這是在CSS中定義的其他類,對不起,也許我忘了它,當我寫了答案 – MaglioniLorenzo