2016-05-18 16 views
0

Stage.close() funktioniert nicht für mich.Warum funktioniert meine Stage.close nicht

Ich habe auf überprüfter: JavaFX 2.0: Closing a stage (window)

Hier meine Codes ist:

import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.layout.VBox; 
import javafx.scene.control.Label; 
import javafx.scene.control.Button; 
import javafx.stage.Modality; 

public class MsgBox { 

    public Stage MessageBox(String Title, String Message){ 

     VBox Pnl = new VBox(); 
     Pnl.setPadding(new Insets(10,10,10,10)); 
     Pnl.setSpacing(10); 
     Pnl.setAlignment(Pos.CENTER); 

      Label LblMsg = new Label(Message); 
      Button CmdOK = new Button("OK"); 

     Pnl.getChildren().addAll(LblMsg, CmdOK); 

     Scene SCN = new Scene(Pnl); 

     Stage Window = new Stage(); 
      Window.initModality(Modality.APPLICATION_MODAL); 
      Window.setTitle(Title); 
      Window.setScene(SCN); 
      Window.showAndWait(); 


     CmdOK.setOnAction(new EventHandler<ActionEvent>(){ 
      public void handle(ActionEvent ev){ 
       Window.close(); 
      } 
     }); 

     return Window; 
    } 
} 

Hier ist der Code, der die Message Box Klasse ruft:

CmdUpdate.setOnAction(new EventHandler<ActionEvent>(){ 
     public void handle(ActionEvent ev){ 
      new MsgBox().MessageBox("Hello", "Hello World"); 

     } 
}); 
+0

Nur ein FYI, aber nicht Camel Case in Java verwenden. Ihre Variablen sollten mit Kleinbuchstaben beginnen. Klassennamen beginnen mit Großbuchstaben, aber nicht mit Variablen. – ManoDestra

+0

Danke ManoDestra ... –

Antwort

2

Aufruf Stage#showAndWait wartet, bis die Bühne schließt sich vor der Rückkehr, so dass die nächste Linie nie eine Chance bekommt, zu laufen.

die Zeile nach

Window.showAndWait(); 

die letzten in der Methode zu sein (entscheidend - nachdem Sie den Handler einstellen Schließen die Bühne zu ermöglichen), oder auch Stage#show nur verwenden, und Ihr Problem gelöst werden soll.

+0

Wow, es funktioniert ... So einfach und ich konnte nicht .... Vielen Dank. –

Verwandte Themen