我创建了一个带有一些资源文件的JavaFX Maven应用程序(在项目文件夹" src / main / resources")。该应用程序在NetBeans环境中运行良好。但是,当构建自包含的JAR文件并将其复制到另一个文件夹时,应用程序的可视项目(ComboBoxes,TextFields,VBoxes,...)无法正确显示(不同的颜色,错误的填充,。 ..)。
例如,this screenshot显示正确的可视化(在Netbeans环境中获得),而this screenshot则没有。这里,区别在于ComboBox悬停项目的颜色(错误版本中为白色)和ComboBox栏的大小。这些样式存在于CSS文件中(在" src / main / resources / styles"中)。
我不明白为什么在部署的JavaFX Maven应用程序中没有正确应用CSS。有些样式仍然有效(例如Buttons样式)但有些样式没有(例如ComboBoxes文本)。
我该怎么做才能防止这种情况发生?
更新:
CSS文件存在于JAR文件中,因为某些样式(例如Buttons样式)在应用程序(NetBeans外部)中正确加载。这是我用来将样式表加载到JavaFX场景中的代码:
scene.getStylesheets().add(this.getClass().getResource("/styles/styles.css").toExternalForm());
" styles.css"文件保存在" src / main / resources / styles / styles.css"。
中例如,Java代码中应用了以下样式:
Button save = new Button("Save");
save.getStyleClass().add("primary-button"); // -> It works
不起作用的样式包括那些没有直接样式的样式。它们会影响所有ComboBox,CheckBox等。例如:
.combo-box-popup {
-fx-min-width: 555px;
}
.combo-box-popup .list-view {
-fx-min-width: 555px;
}
.combo-box-base {
-fx-background-color: transparent, transparent, transparent, white;
-fx-border-width: 1;
-fx-border-color: #666666;
-fx-font-family: "Roboto Light";
-fx-font-size: 14px;
-fx-fill: #666666;
}
.combo-box .arrow {
-fx-background-color: #979797;
-fx-background-radius: 0;
}
.combo-box .arrow-button {
-fx-background-color: #d8d8d8;
-fx-background-radius: 0;
}
.combo-box .arrow-button:hover {
-fx-background-color: #e1e1e1;
-fx-background-radius: 0;
}
.combo-box-popup .list-view .list-cell:filled:selected, .combo-box-popup .list-view .list-cell:filled:selected:hover {
-fx-background-color: #6995df;
}
.combo-box-popup .list-view .list-cell:filled:hover {
-fx-background-color: #f3f3f3;
}
Netbeans IDE版本:8.0.1。
JavaFX版本:8(来自JDK 1.8.0_25)。
计算机JRE版本:1.8.0_25。
我希望这有助于理解这个问题。
答案 0 :(得分:0)
在对CSS文件进行一些更改之后,我意识到JavaFX 8已经改变了CSS中的一些功能(例如背景)并添加了一些新的默认样式(例如ComboBoxes中的白色文本)。
最后,我更改并添加了一些样式到我的CSS文件。现在,CSS效果很好。谢谢!