Как javafx скрыть фоновый заголовок таблицы?

Я пытаюсь разработать автозаполненный текст, который показывает выпадающий список предложений во всплывающем окне просмотра таблицы, и у меня возникла проблема, как я могу скрыть весь заголовок столбца таблицы в javafx 2.1

3 ответа

Примените пользовательскую таблицу стилей к таблице:

table.getStylesheets().addAll(getClass().getResource("hidden-tableview-headers.css").toExternalForm());

Где файл hidden-tableview-headers.css находится в том же месте, что и класс, загружающий ресурс css, и содержит строку:

.column-header-background { visibility: hidden; -fx-padding: -1em; }

visibility: hidden Атрибут указывает JavaFX не рисовать узел, но по-прежнему оставлять место, где был заголовок. Так как заголовок имеет высоту 1 строки высоты текста, вы можете указать невидимому заголовку не занимать места, установив -fx-padding: -1em;,

Решение очень простое; после рендеринга табличного представления мы можем получить заголовок таблицы и сделать его невидимым, поэтому заголовок таблицы не нужно перекомпоновывать при изменении макета табличного представления. Чтобы поймать рендеринг таблицы, мы можем использовать изменение свойства width и скрыть заголовок таблицы

Вот код:

tableView.widthProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
            // Get the table header
            Pane header = (Pane)tableView.lookup("TableHeaderRow");
            if(header!=null && header.isVisible()) {
              header.setMaxHeight(0);
              header.setMinHeight(0);
              header.setPrefHeight(0);
              header.setVisible(false);
              header.setManaged(false);
            }
        }
    });

Если вы не хотите добавлять дополнительный файл.css, вы можете использовать существующий CSS:

.hide-header .column-header-background { 
    visibility: hidden; -fx-padding: -1em;
}

куда .hide-header случайное имя, которое вы должны добавить в свой код Java:

table.getStyleClass().add("hide-header");
Другие вопросы по тегам