Выберите, какие строки будут отображаться в JTable - PullRequest
1 голос
/ 27 января 2012

У меня есть JTable, и внутри его TableModel я сохранил int;это индекс строки, который я хочу, чтобы мое представление «держало посередине» области просмотра.
Я имею в виду, что, например, если у меня 1000 строк, в любое время отображаются 10 в представлениииндекс 500, я хочу, чтобы мой vieport автоматически показывал строки 495-504.Эти строки не обязательно выбраны.Я надеюсь, что смог правильно объяснить свою проблему.

Спасибо

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Предполагая, что ваша высота строк одинакова,

int rowPosition = index - 10 / 2;
int pixelPosition = rowPosition * table.getRowHeight(rowPosition);
scrollPane.getViewPort().setViewPosition(new Point(0, pixelPosition));

Если высота строк не одинакова, вам придется сложить все высоты строк от строки 1 до индекса строки - 5.

3 голосов
/ 27 января 2012

1) JTable (уведомление может быть вызвано Filtering) возвращает количество строк

2) каждая строка может вернуть Прямоугольник

3)поместите это Rectangle в JScrollPane # scrollRectToVisible (Rectangle aRect) , заключенный в invokeLater (), простой пример перемещения JViewport в строку решения здесь

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