JavaFX: как отключить полосы прокрутки в TableView - PullRequest
1 голос
/ 11 марта 2019

Надеюсь, у всех все хорошо.

У меня есть TableView в javafx, и я хотел бы, чтобы поведение таблицы урезало изображение TableView, когда размер родительской панели слишком мал, чтобы отображать данные, вместо того чтобы она стала прокручиваемой. Чтобы уточнить, я просто хочу, чтобы полосы прокрутки были отключены или не видны, чтобы они не отображались.

Ниже приведена моя иерархия на случай, если это поможет.

enter image description here

То, что я попробовал ниже

Я прочитал этот пост , но ответ просто изменяет размеры ячеек, чтобы соответствовать ширине, вместо отключения ScrollBar. Я прочитал документацию по ScrollBar здесь , но не смог найти свойство setVisible () или setEnabled (). Я также прочитал документацию TableView здесь без везения.

Я искал руководство по Javafx css здесь и обнаружил, что есть две политики ниже, которые могут ссылаться на область прокрутки.

-fx-hbar-policy:
-fx-vbar-policy:

Но перенос TableView в ScrollPane не сработал, как ожидалось. Это не позволило мне «соответствовать родителю». Я хотел бы сослаться на эти свойства, но в TableView напрямую, если это возможно. Любые предложения приветствуются.

Большое спасибо за ваше время.

1 Ответ

1 голос
/ 11 марта 2019

Полное скрытие полос прокрутки, независимо от того, должны ли они «отображаться» или нет, может быть достигнуто с помощью следующего CSS:

.table-view .scroll-bar * {
    -fx-min-width: 0;
    -fx-pref-width: 0;
    -fx-max-width: 0;

    -fx-min-height: 0;
    -fx-pref-height: 0;
    -fx-max-height: 0;
}

Если вы хотите отключить всю прокрутку, вы можете добавитьфильтр событий на TableView:

table.addEventFilter(ScrollEvent.ANY, Event::consume);

// or if you only want to disable horizontal scrolling
table.addEventfilter(ScrollEvent.ANY, event -> {
    if (event.getDeltaX() != 0) {
        event.consume();
    }
});

Если вы не хотите, чтобы TableView сокращался, когда родительский элемент становится слишком маленьким, установите минимальный размер, чтобы использовать размер префа:

table.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);

Если вы не хотите, чтобы значение TableView превышало заданный размер, делайте то же самое с максимальным размером.Вы также можете указать явный размер префа, если хотите.

...