2015-01-16 7 views
11

Być może brakuje czegoś bardzo oczywistego, ale nie mogę się dowiedzieć, jak ustawić ikonę dla składnika dialogu (ProgressDialog, aby być bardziej precyzyjnym). Wiem, jak to zrobić na stole montażowym, this.primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/icon/Logo.png")));, ale nie znajduję niczego dla rodziny Dialog. I w jakiś sposób ustawienie ikony stołu montażowego nie wpływa na ikonę okna dialogowego.W jaki sposób ustawić ikonę formantu dialogowego Java FX/Java 8

Dzięki

Odpowiedz

20

Jest to doskonały poradnik here Marco Jakob, gdzie można znaleźć nie tylko w jaki sposób korzystać z okien dialogowych, ale także, jak rozwiązać problem.

Zarówno dla nowych dialogów (w JDK8u40 wczesnych wersjach lub openjfx-dialogs z JDK 8u25), lub dla tych, którzy w ControlsFX, aby ustawić ikonę swojego okna, można użyć tego solution:

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

Ten fragment kodu pokazuje, jak używać ProgressDialog z ControlsFX i ustawić ikonę dla okna:

@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(); 
} 
+0

Dodatkowo, polecam wywołanie 'dialog.initOwner (primaryStage)' przed wyświetleniem okna dialogowego. – jewelsea

+1

Należy zauważyć, że to okno dialogowe postępu pokazuje, kiedy usługa się uruchamia, więc nie ma potrzeby wywoływania 'dialog.showAndWait()'. –

5

prostu zrobić tak:

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(); 

Oto wynik

enter image description here

** Moi przyjaciele, jest to informatyka, co robimy? : Nie, wykonujemy rękodzieło **

+1

będzie to stage.getIcons(). Add (nowy obraz ("indiza/XnotesErrorIdz.png")); // Aby dodać ikonę –

+0

Zmodyfikowałem to dzięki –

Powiązane problemy