voskobovich
@voskobovich
PHP Developer | 8+ years exp.

JavaFX: Как при клике на строку в таблице открыть окно детального просмотра?

При клике на строку в таблице, нужно показать окно заполненное моделью которую я выбрал.
Ловлю событие, вот обработчик
/**
     * Событие выбора строки
     * Срабатывает когда пользователь выбирает строку в таблице продуктов.
     *
     * @param item - выбранная модел продукта
     */
    private void selectRowAction(Order item) {
        this.updateTable();
        AnchorPane orderFormView = OrderFormController.getView();
        BreadCrumbs.setView(orderFormView);
    }

OrderFormController.getView:
/**
     * Геттер представления карточки товара
     * @return
     */
    public static final AnchorPane getView() {
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(Object.class.getResource("/views/OrderForm.fxml"));
            return loader.load();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

Сейчас этот код показывает нужную форму пользователю, но не заполняет ее данными.

Проблема в том, что ведущим является файл представления. После его загрузки уже грузиться контроллер, а в нем метод initialize() и уже там вешаются обработчики и изменяется содержимое представления.
Проблема в том, что я не знаю как методу initialize() сказать "Загрузи мне в представление ВОТ ЭТУ модель".

Кто знает как решить и куда копать?
  • Вопрос задан
  • 3576 просмотров
Пригласить эксперта
Ответы на вопрос 1
@volna80
Получить контроллер из лоадера, привести его к реальному к классу и вызывать метод который до загрузит нужные данные

Object controller = loader.getController();
((MyController) controller).loadOrder(order)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы