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(".png").toString()));
此代码段显示如何使用ControlsFX中的ProgressDialog,并为对话框设置图标:
@Override
public void start(Stage primaryStage) {
Service service = new Service() {
@Override protected Task createTask() {
return new Task() {
@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(".png").toString()));
service.start();
});
Scene scene = new Scene(new StackPane(btn), 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}