如何从ControlsFX

时间:2015-10-02 15:54:26

标签: javafx-8 controlsfx

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

然而,对于仅在UI上发生的事情,如果可以,我宁愿使用它。我无法弄清楚如何使它们看起来一样。

这就是我想要的:

enter image description here

这就是我尝试使用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();

然而,这并没有将我的图像放在我想要的地方,我不知道如何改变它。

enter image description here

如果可能的话,我希望这些风格相同。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以通过设置titleheaderText

来进行文字匹配
pd.setTitle("Please Wait...");
pd.setHeaderText("This will take a moment...");

您可以像现在一样设置contextText,或者service task可以拨打updateMessage("some message");。此消息将显示在进度对话框contextText中。这允许您更新任务中的contentText消息,以便在用户进行任务时让用户知道发生了什么。

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

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");
}