2015-01-16 3 views
11

Ich vermisse etwas sehr offensichtlich, aber ich kann nicht herausfinden, wie man das Icon für eine Dialog-Komponente (ProgressDialog, um genauer zu sein). Ich weiß, wie man das für eine Bühne macht, this.primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/icon/Logo.png")));, aber ich finde nichts für die Dialog-Familie. Und irgendwie beeinflusst das Setzen des Bühnen-Icons das Dialog-Icon nicht.Wie setze ich das Symbol eines Dialog-Steuerelements Java FX/Java 8

Dank

Antwort

20

Es gibt eine ausgezeichnete Tutorial here von Marco Jakob, wo man nicht nur finden kann, wie Dialoge zu verwenden, sondern auch, wie Ihr Problem zu lösen.

Sowohl für die neuen Dialoge (in JDK8u40 frühen Versionen oder mit openjfx-dialogs mit JDK 8u25), oder für diejenigen, die in ControlsFX, um das Symbol des Dialogs zu setzen, können Sie diese solution verwenden:

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

Dieser Code-Schnipsel zeigt, wie ein ProgressDialog zu verwenden, von ControlsFX, und legen Sie ein Symbol für den Dialog:

@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

Zusätzlich empfehle ich 'dialog.initOwner (primaryStage)' vor dem Anzeigen des Dialogs aufzurufen. – jewelsea

+1

Beachten Sie, dass dieser Fortschrittsdialog angezeigt wird, wenn der Dienst gestartet wird, so dass Sie '' dialog.showAndWait() 'nicht aufrufen müssen. –

5

Genau wie folgt tun:

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

Hier ist das Ergebnis

enter image description here

** Meine Freunde, ist es der Informatik, die wir tun? : Nein, wir basteln **

+1

wäre es stage.getIcons(). Add (neues Bild ("indiza/XnotesErrorIdz.png")); // Um ​​ein Symbol hinzuzufügen –

+0

Ich habe es geändert, danke –