gpt4 book ai didi

javafx - 样式化默认 JavaFX 对话框

转载 作者:行者123 更新时间:2023-12-03 09:20:07 30 4
gpt4 key购买 nike

我正在寻找一种方法来设置默认 JavaFX 对话框 (javafx.scene.control.Dialog) 的样式。

我试图获取 DialogPane 并添加一个样式表,但它只涵盖了对话框的一小部分。我宁愿只使用外部 css 文件来设置样式,而不是在代码上添加 styleClasses。这看起来很乱(标题,内容,内容上的自己的内容等等......)

我已经用谷歌搜索了很多,只找到了 ControlsFX 的示例,但是由于 jdk8_40 JavaFX 有它自己的对话框,我现在使用它们。

有什么建议么?

编辑:

自从 José Pereda 发布解决方案后,我创建了自己的 dialog.css。
我会把它贴在这里,因为它涵盖了整个对话,也许有人想要复制和粘贴它。注意 .dialog-pane 已经是给定的 styleClass 名称,因此您无需应用自己的名称。当然,何塞更细致。

.dialog-pane {
-fx-background-color: black;
}

.dialog-pane .label {
-fx-text-fill: white;
}

.dialog-pane:header .header-panel {
-fx-background-color: black;
}

.dialog-pane:header .header-panel .label {
-fx-font-style: italic;
-fx-font-size: 2em;
}

最佳答案

您可以使用自己的 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");
...
}

您可以访问其对话框 Pane 并添加您自己的样式表和您自己的类选择器:
DialogPane dialogPane = alert.getDialogPane();
dialogPane.getStylesheets().add(
getClass().getResource("myDialogs.css").toExternalForm());
dialogPane.getStyleClass().add("myDialog");

现在诀窍是了解所有规则 Dialog样式表已默认实现。

这是一项艰巨的任务……因为它们不在 modena.css 中。文件,与所有常规控件一样。相反,它们位于 modena.bss文件,一个二进制文件,位于私有(private)包下的 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;
}

你将有你的风格对话框:

Styled dialog

请注意,作为私有(private)包下的 bss 文件,这些选择器可能会在将来的版本中更改,恕不另行通知。

编辑

我刚刚发现 .dialog-pane选择器已经是 modena.css 的一部分在最后 8u40 early versions ,因此您可以在此处找到应用于对话框 Pane 的所有选择器和规则。

关于javafx - 样式化默认 JavaFX 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417140/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com