【发布时间】:2016-12-14 12:50:50
【问题描述】:
我正在用 JavaFX 创建一个计算器。我有一个带有 fx:ID #labelResult 的标签,采用 css 样式。现在我将键盘监听器添加到主窗格。因此,当我按下 Left/Right 箭头键时,我会将 #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-改变标签的bg颜色后
3-在更改bg颜色的同时更改标签的字体大小后
【问题讨论】:
-
当您设置样式时,您会覆盖所有以前的样式。更好的解决方案是制作单独的css文件并在类之间切换。
-
@fabian 谢谢,添加了休息时间。
标签: java css javafx javafx-2 javafx-8