Мне нужно добавить опцию фильтра 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);
}
});
}
});
Есть ли способ контролировать выполнение отображения таблицы?