2013-03-25 61 views
8

Tôi muốn chặn cửa sổ chủ sở hữu cho một cửa sổ bật lên trong JavaFX.Cửa sổ chủ sở hữu khối Java FX

tôi khởi sổ popup của tôi như thế này:

popUp = new Popup(); 
popUp.getContent().add(content); 
popUp.show(pane.getScene().getWindow()); 

Với điều này, tôi vẫn có thể làm việc trong cửa sổ đầu tiên (cửa sổ pane). Tôi muốn vô hiệu hóa hành động này và tôi muốn người dùng chỉ hoạt động trong cửa sổ bật lên.

Cách thực hiện việc này?

Cảm ơn.

Trả lời

14

Sử dụng số Stage thay vì Popup.

Trước khi hiển thị sân khấu, hãy gọi stage.initModalityAPPLICATION_MODAL hoặc WINDOW_MODAL, nếu phù hợp. Ngoài ra, hãy gọi stage.initOwner tới cửa sổ chính của giai đoạn mới của bạn sao cho nó sẽ chặn nó một cách thích hợp cho trường hợp WINDOW_MODAL.

Stage stage = new Stage(); 
stage.initModality(Modality.WINDOW_MODAL); 
stage.initOwner(pane.getScene().getWindow()); 
stage.setScene(new Scene(content)); 
stage.show(); 
+0

Đó là chính xác những gì tôi cần. Cảm ơn. – Kiva

1

Cảm ơn, giải pháp tối ưu: ví dụ với tập tin tải FXML:

@Override 
    public void start(Stage primaryStage) throws IOException { 
     Parent root = FXMLLoader.load(getClass().getResource("DialogView.fxml")); 
     primaryStage.initModality(Modality.APPLICATION_MODAL); // 1 Add one 
     Scene scene = new Scene(root);   
     primaryStage.setScene(scene); 
     primaryStage.initOwner(primaryStage.getScene().getWindow());// 2 Add two 
     primaryStage.show(); 

    } 

    public static void main(String[] args) { 
     launch(args); 

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