2016-05-18 25 views
0

Stage.close()が動作しません。私が上でチェックしたStage.closeが動作しない理由

:ここ JavaFX 2.0: Closing a stage (window)

は私のコードです:ここでは

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; 
    } 
} 

はメッセージボックスクラスを呼び出すコードです:

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

     } 
}); 
+0

ただのFYIですが、JavaではCamel Caseを使用しません。変数は小文字で始まる必要があります。クラス名は大文字で始まりますが、変数ではありません。 – ManoDestra

+0

ありがとうManoDestra ... –

答えて

2

までStage#showAndWait待機を呼び出しますステージが戻る前に終了するので、実際には次のラインは決して走る機会を得ません。

(決定的に - あなたは、ステージを閉じる許可するようにハンドラを設定した後)メソッドの最後であることを行

Window.showAndWait(); 

を移動

、または他のちょうどStage#showを使用して、あなたの問題が解決されなければなりません。

+0

うわー、それは働く...だからシンプルで私はできなかった....ありがとう。 –

関連する問題