您可以使用自己的 css 文件设置对话框的样式,但为此您需要考虑到该对话框实际上是一个新阶段,具有一个新场景,并且根节点是DialogPane
实例。
因此,一旦您创建了一些对话框实例:
@Override
public void start(Stage primaryStage) {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Confirmation Dialog");
alert.setHeaderText("This is a Custom Confirmation Dialog");
alert.setContentText("We override the style classes of the dialog");
...
}
您可以访问其对话框窗格并添加您自己的样式表和您自己的类选择器:
DialogPane dialogPane = alert.getDialogPane();
dialogPane.getStylesheets().add(
getClass().getResource("myDialogs.css").toExternalForm());
dialogPane.getStyleClass().add("myDialog");
现在的诀窍是了解所有规则Dialog
样式表已默认实现。
这是一项艰巨的任务......因为他们不在modena.css
文件,就像所有常规控件一样。相反,它们被发现在modena.bss
文件,位于私有包下的 jfxrt.jar 中的二进制文件。
经过一番挖掘后,我设法获得了这些规则,所以您的自定义myDialogs.css
文件看起来像这样:
.myDialog{
-fx-background-color: #f9d900;
}
.myDialog > *.button-bar > *.container{
-fx-background-color: #a9e200;
}
.myDialog > *.label.content{
-fx-font-size: 14px;
-fx-font-weight: bold;
}
.myDialog:header *.header-panel{
-fx-background-color: #a59c31;
}
.myDialog:header *.header-panel *.label{
-fx-font-size: 18px;
-fx-font-style: italic;
-fx-fill: #292929;
}
你将得到你的风格对话框:
Note that being a bss file under private packages, these selectors can change without notice in future releases.
EDIT
我刚刚发现.dialog-pane
选择器已经是摩德纳.css http://hg.openjdk.java.net/openjfx/8u40/rt/file/6cc08ec1ea82/modules/controls/src/main/resources/com/sun/javafx/scene/control/skin/modena/modena.css在过去的 8 点 40 分早期版本 https://jdk8.java.net/download.html,因此您可以在那里找到应用于对话框窗格的所有选择器和规则。