如何从 ControlsFX 自定义 org.controlsfx.dialog.ProgressDialog

How can I customize the org.controlsfx.dialog.ProgressDialog from ControlsFX

我创建了自己的自定义进度对话框来处理服务器调用,使用的框架会在后台线程 运行 时显示弹出警报。我没有使用 Service/Task 来完成后台线程,因此,我无法使用 ControlsFX ProgressAlert。

然而,对于仅在 UI 上发生的事情,如果可以的话,我宁愿使用它。我不知道如何让它们看起来一样。

这就是我想要的:

这就是我尝试使用 ControlsFX 进行此操作的方式:

ProgressDialog pd = new ProgressDialog(service);
        pd.getDialogPane().setGraphic(new ImageView(new Image(getClass().getClassLoader().getResource("images/myImage.png").toExternalForm())));
        pd.setGraphic(new ImageView(new Image(getClass().getClassLoader().getResource("images/myImage.png").toExternalForm())));
        pd.setContentText("Reprinting Batch Header....");
        pd.setHeaderText("Please Wait...");
        pd.initModality(Modality.WINDOW_MODAL);
        pd.initOwner(parent.getPrimaryStage());
        service.start();

然而,这并没有将我的图像放在我想要的位置,我不确定如何更改它。

如果可能的话,我希望这些样式相同。

谢谢。

您可以通过同时设置 titleheaderText 来使文本匹配:

pd.setTitle("Please Wait...");
pd.setHeaderText("This will take a moment...");

您可以像现在这样设置contextText,或者您的servicetask可以调用updateMessage("some message");。此消息将显示在进度对话框的 contextText 中。这使您可以更新来自任务的 contentText 消息,让用户知道随着任务的进行正在发生什么。

正在通过 css 设置 "info" 图像。您可以通过替换应用于进度对话框的样式表来更改它:

pd.getDialogPane().getStylesheets().clear();
pd.getDialogPane().getStylesheets().add(YourClass.getResource("/path/to/yourcss.css").toExternalForm());

然后在您的css中指定图像:

.progress-dialog.dialog-pane {
    -fx-graphic: url("path/to/image.png");
}