о представлении таблицы javafx - PullRequest
1 голос
/ 01 июня 2019

Я хочу настроить кнопку просмотра таблицы, но она пуста, когда я получаю кнопку show-hide-columns-button в методе initialize. Есть способ получить кнопку show-hide-columns-button.

    @FXML
    private TableView tableView;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        tableView.setTableMenuButtonVisible(true);
        final Node showHideColumnsButton = tableView
                .lookup(".show-hide-columns-button");
        System.out.println(showHideColumnsButton);
    }

1 Ответ

0 голосов
/ 02 июня 2019

Как уже упоминалось в комментариях, вызов lookup(".show-hide-columns-button") возвращает ноль, если Scene еще не отображается. Простое решение:

tableView.sceneProperty().addListener((observable, oldScene, newScene) -> {
    if (newScene != null) {
        newScene.windowProperty().addListener((obs, oldWindow, newWindow) -> {
            if (newWindow != null) {
                newWindow.addEventHandler(WindowEvent.WINDOW_SHOWN, event -> {
                    final Node showHideColumnsButton = tableView.lookup(".show-hide-columns-button");
                    // Customize your node here...
                    showHideColumnsButton.setStyle("-fx-background-color: red;");
                    event.consume();
                });
            }
        });
    }
});
...