Я создаю калькулятор в JavaFX. У меня есть метка с fx: ID #labelResult, в стиле css. Теперь я добавил слушателя клавиатуры в главное окно. Таким образом, когда я нажимаю Влево/Вправо стрелка. Я меняю цвет фона #labelResult на цвет из строки bgColors array. Я также добавил функциональность, чтобы изменить размер шрифта меток, когда Upper/Down клавиши со стрелками. Теперь проблема есть. Кажется, что я не могу одновременно использовать оба эффекта. Поэтому, когда у меня изменился цвет фона ярлыка, и я запускаю механизм изменения размера шрифта, эффект размера шрифта применяется к метке, а эффект цвета 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- после изменения размера шрифта метки в то время как Б.Г. цвета меняются
когда это вы «setStyle», вы переопределяете все предыдущие стили. Лучшим решением является создание отдельного файла css и переход между классами. –
@fabian спасибо, добавлены перерывы. –