2013-03-25 10 views
8

Chciałbym zablokować okno właściciela dla wyskakującego okienka w JavaFX.Okno właściciela bloku Java FX

zainicjować moje okienko tak:

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

Dzięki temu, mogę nadal pracować w pierwszym oknie (okno szyba). Chciałbym wyłączyć tę akcję i chciałbym, aby użytkownik po prostu działał w wyskakującym okienku.

Jak to zrobić?

Dzięki.

Odpowiedz

14

Użyj Stage zamiast Popup. Przed wyświetleniem etapu należy wywołać stage.initModality jako APPLICATION_MODAL lub WINDOW_MODAL. Ponadto wywołaj okno dialogowe stage.initOwner w oknie nadrzędnym nowego etapu, aby odpowiednio zablokować go w przypadku WINDOW_MODAL.

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

To jest dokładnie to, czego potrzebuję. Dzięki. – Kiva

1

Dzięki optymalnym rozwiązaniem: przykład z pliku obciążenia 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); 

    } 
Powiązane problemy