Как добавить событие прослушивателя присутствия в элемент управления - PullRequest
0 голосов
/ 31 мая 2019

Мне нужно добавить опцию фильтра FilterButton в табличное представление, но табличное представление не существует во время выполнения метода инициализации, в результате чего следующий код сообщает об ошибке.

@Override
public void initialize(URL location, ResourceBundle resources) {
    final ContextMenu menu = new ContextMenu();
    menu.getItems().addAll(showHideidUrl);
    final Node showHideColumnsButton = tableView
            .lookup(".show-hide-columns-button");
    EventHandler<MouseEvent> mousePressedHandler = new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            if (menu.isShowing()) {
                menu.hide();
            } else {
                menu.show(showHideColumnsButton, Side.BOTTOM, 0, 0);
            }
            event.consume();
        }
    };
    showHideColumnsButton.addEventFilter(MouseEvent.MOUSE_PRESSED,
            mousePressedHandler);
}

Мой тестер не использует следующий мониторинг событий.

tableView.sceneProperty().addListener((observableScene, oldScene, newScene) -> {
    if (oldScene == null && newScene != null) {
        newScene.windowProperty().addListener((observableWindow, oldWindow, newWindow) -> {
            if (oldWindow == null && newWindow != null) {
                    final ContextMenu menu = new ContextMenu();
                    menu.getItems().addAll(showHideidUrl);
                    final Node showHideColumnsButton = tableView
                            .lookup(".show-hide-columns-button");
                    EventHandler<MouseEvent> mousePressedHandler = new EventHandler<MouseEvent>() {
                        @Override
                        public void handle(MouseEvent event) {
                            if (menu.isShowing()) {
                                menu.hide();
                            } else {
                                menu.show(showHideColumnsButton, Side.BOTTOM, 0, 0);
                            }
                            event.consume();
                        }
                    };
                    showHideColumnsButton.addEventFilter(MouseEvent.MOUSE_PRESSED,
                            mousePressedHandler);
            }
        });
    }
});

Есть ли способ контролировать выполнение отображения таблицы?

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