Открывать каждое окно только один раз - PullRequest
2 голосов
/ 29 марта 2019

У меня есть диаграмма. Двойной щелчок по строке таблицы открывает окно, в котором я могу редактировать информацию о строке. Двойной щелчок по другой строке открывает соответствующее окно. Все работает как надо, за исключением того, что каждое окно должно открываться только один раз. Если оно уже открыто, окно должно вернуться на передний план. К сожалению, я не вижу, что здесь не так, и был бы признателен за подсказку

private void loadTable() {

    // I omitted the part where the table is populated.

    mytable.setOnMousePressed(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {

            if (event.isPrimaryButtonDown() && event.getClickCount() == 2) {

                TableItem table_item = table_view.getSelectionModel().getSelectedItem();

                try {

                    FXMLLoader fxmlLoader = new FXMLLoader();
                    fxmlLoader.setLocation(getClass().getResource("/application/Popup.fxml"));

                    Scene scene = new Scene(fxmlLoader.load());
                    Stage stage = new Stage();   
                    stage.setScene(scene);
                    MyController controller = fxmlLoader.<MyController>getController();
                    boolean result = controller.init(stage, table_item);              

                    if (stage.isShowing()) {
                        stage.toFront();
                        System.out.println("Show this popup.");
                    } else {                        
                        if (result) {                                   
                            stage.show();
                            System.out.println("Open this popup.");
                        }
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }
    });
}

1 Ответ

1 голос
/ 29 марта 2019

Попробуйте добавить

stage.initModality(Modality.WINDOW_MODAL);

после

Stage stage = new Stage();   

Это сделает стадию Parent неактивной до тех пор, пока эта стадия не будет закрыта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...