2012-08-30 46 views
5

Tôi có một ứng dụng mà tôi gọi mã sau đây khi một ngoại lệ xảy ra - tức là, nó nằm trong "bắt" của "try/catch". Nó chỉ tạo ra một cửa sổ "popup" giống như cho phép người dùng nhập vào một int thay vào đó.Làm cách nào để đóng tất cả các giai đoạn khi giai đoạn chính bị đóng?

Stage dialogStage = new Stage(); 
dialogStage.initModality(Modality.WINDOW_MODAL); 
dialogStage.setScene(new Scene(VBoxBuilder.create(). 
children(new Text("Please enter an integer."), new Button("Ok.")). 
alignment(Pos.CENTER).padding(new Insets(5)).build())); 
dialogStage.show(); 

Vấn đề duy nhất là sân khấu vẫn còn trống nếu giai đoạn chính (là tham số trong khoảng trống công khai (Stage primaryStage)) bị đóng.

Tôi đã thử gì ?:

Tôi đã hiển thị hộp thoại trong toàn bộ lớp bằng cách xác định nó là biến lớp. Sau đó, tôi thực hiện đoạn mã sau:

primaryStage.setOnCloseRequest((new EventHandler<WindowEvent>(){ 

     @Override 
     public void handle(WindowEvent arg0) { 
          arg0.consume(); 
      try 
      { 
      dialogStage.close(); 

          } 
      catch(Exception ex) 
      { 
       System.out.print(ex.getMessage()+"\r\n"); 
      } 

     } 
    })); 
} 

này "tác phẩm" trong đó các dialogstage được đóng lại khi người dùng cố gắng thoát khỏi ứng dụng chính, tuy nhiên, nó không thực sự làm những gì tôi dự định: khi bạn cố gắng để đóng giai đoạn chính chỉ có hộp thoại được đóng lại.

Nó cũng là một giải pháp thẩm mỹ không hài lòng vì tôi không muốn cả lớp biết về hộp thoại ngu ngốc chỉ nằm trong một lần thử/nắm bắt và có thể không bao giờ được sử dụng.

Tôi muốn biết nếu có một giải pháp đơn giản cho phép hộp thoại đóng khi giai đoạn chính và nơi tôi không phải viết nhiều mã bên ngoài thử/nắm bắt của tôi.

Trả lời

Các vấn đề liên quan