如何设置对话框控件 Java FX/Java 8 的图标

2022-09-02 11:45:20

我可能错过了一些非常明显的东西,但我找不到如何为对话框组件设置图标(更准确地说是ProgressDialog)。我知道如何为舞台做到这一点:

this.primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/icon/Logo.png")));

但是我没有找到Dialog系列的任何东西。不知何故,设置舞台图标不会影响对话框图标。

谢谢


答案 1

这里有一个由Marco Jakob编写的优秀教程,您不仅可以找到如何使用对话框,还可以找到如何解决您的问题。

对于新对话框(在 JDK8u40 早期版本中,或使用 JDK 8u25 的 openjfx 对话框),或者对于 ControlsFX 中的对话框,为了设置对话框的图标,您可以使用以下解决方案

Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
stage.getIcons().add(
    new Image(this.getClass().getResource("<image>.png").toString()));

此代码片段演示如何使用 ControlsFX 中的 、并为对话框设置图标:ProgressDialog

@Override
public void start(Stage primaryStage) {

    Service<Void> service = new Service<Void>() {
        @Override protected Task<Void> createTask() {
            return new Task<Void>() {
                @Override protected Void call() throws InterruptedException {
                    updateMessage("Message . . .");
                    updateProgress(0, 10);
                    for (int i = 0; i < 10; i++) {
                        Thread.sleep(300);
                        updateProgress(i + 1, 10);
                        updateMessage("Progress " + (i + 1) + " of 10");
                    }
                    updateMessage("End task");
                    return null;
                }
            };
        }
    };

    Button btn = new Button("Start Service");
    btn.setOnAction(e -> {
        ProgressDialog dialog = new ProgressDialog(service);
        dialog.setTitle("Progress Dialog");
        dialog.setHeaderText("Header message");
        Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image(this.getClass().getResource("<image>.png").toString()));
        service.start();
    });

    Scene scene = new Scene(new StackPane(btn), 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}

答案 2

就这样做吧:

Alert(AlertType.ERROR, "Erreur de connexion! Verifiez vos Identifiants",FINISH); //Cancel..
setTitle("XNotes FX Erreur");
stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.getIcons().add(new Image("indiza/XnotesErrorIdz.png")); // To add an icon
showAndWait();

这是结果

enter image description here

**我的朋友们,我们做的是计算机科学吗?:不,我们做工艺品**


推荐