我可能会缺少一些非常明显的东西,但是我无法找到如何设置对话框组件的图标(ProgressDialog更精确).我知道如何做一个Stage,this.primaryStage.getIcons().add(new
Image(getClass().getResourceAsStream(“/ icon / logo.png”)))但是我没有找到Dialog系列的任何东西.不知何故,设置舞台图标不会影响对话框图标.
谢谢
解决方法
Marco Jakob有一个非常好的教程
here,您可以在其中找到不仅如何使用对话框,还可以找到如何解决您的问题.
对于新的对话框(在JDK8u40早期版本中,或者具有JDK 8u25的openjfx-dialogs),或者对于ControlsFX的对话框,为了设置对话框的图标,可以使用此solution:
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(); }