我正在使用JavaFX創建計算器。我有一個標籤fx:ID #labelResult,用css風格。現在我添加了鍵盤監聽器到主窗格。所以,當我按左/右箭頭鍵我將#labelResult的背景顏色更改爲字符串bgColors數組中的顏色。我還添加了一個功能,用於更改標籤字體大小。上/下箭頭鍵被按下。現在的問題是。似乎我不能同時應用兩種效果。所以當我改變標籤的背景顏色並觸發改變字體大小的機制時,字體大小效果會被應用到標籤,而bg顏色效果會重置。我怎樣才能同時應用這兩種效果?如何以編程方式將多個樣式應用於單個節點
P.S:我使用setStyle方法在兩種情況下在我的控制器中應用樣式。
CSS (before applying styles in my controller)
#labelRESULT {
-fx-background-color: rgba(59, 74, 107, 0.8);
-fx-font-size: 45px;
-fx-text-fill: #fff;
}
Controller.java
@FXML
private Label labelRESULT;
@FXML
private void handleKeys(KeyEvent event) {
int size = 45;
String keyPressed = event.getCode().toString().toUpperCase();
switch (keyPressed) {
case "RIGHT":
labelRESULT.setStyle("-fx-bg-color: #" + bgColors[1]);
break;
case "UP":
labelRESULT.setStyle("-fx-font-size: " + (size + 2) + "px;");
break;
}
}
發生了什麼圖片:http://imgh.us/javafx-calc.png
1-應用樣式之前編程
2-改變標籤的背景顏色後
3-而BG顏色改變
時你'setStyle'你覆蓋所有以前的樣式。更好的解決方案是製作單獨的css文件並在類之間切換。 –
@fabian謝謝,補充休息。 –