Как настроить JScrollPane для показа только определенного количества строк - PullRequest
5 голосов
/ 22 марта 2012

Мне нужна только таблица, показывающая 3 строки, которые получают топ-3 продаваемых продуктов из БД. Таблица готова, но есть огромная часть таблицы, которая практически пуста, за исключением 3 строк. Как установить высоту этой полосы прокрутки в соответствии с высотой 3 строк?

РЕШЕНИЕ:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

1 Ответ

8 голосов
/ 22 марта 2012

Это особенность реализации JTable Scrollable: она устанавливает произвольный фиксированный размер prefScrollable.

Вы обнуляете его, чтобы scrollPane переключился на использование предпочитаемого размера таблицы:

table.setPreferredScrollableViewportSize (null);

Редактировать

outch, @vedran правильно, это не всегда работает в основной таблице с core layoutManagers (это был хороший взлом вдругой вопрос :) извините за путаницу.Копирование его комментария здесь:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

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

Хорошо ведущий себя JTable реализовал бы более разумныйgetPreferredScrollableViewportSize, например, для расчета с точки зрения содержания.JXTable (которая является таблицей с лучшим поведением, пристрастная ко мне :-), вы можете установить pref в терминах видимых строк, как в списке:

xtable.setVisualRowCount(3); 
...