Невозможно программно прокрутить до последнего элемента в JList - PullRequest
5 голосов
/ 23 апреля 2010

У меня есть JList, вложенный в JScrollPane. Когда я добавляю элементы в JList, я хочу, чтобы JScrollPane автоматически прокручивал до конца JList, чтобы последний элемент был виден. Для этого у меня есть следующий код:

getWordListScroller().getVerticalScrollBar().getModel().setValue(getWordListScroller().getVerticalScrollBar().getModel().getMaximum());

Однако, когда я пытаюсь использовать этот код, JScrollPane прокручивает только второй до последнего элемента, оставляя последний элемент вне поля зрения. Это никоим образом не желательно. Я попытался добавить значения в getMaximum (), но проблема не исчезла.

Как заставить JScrollPane прокручиваться до самого дна?

Ответы [ 2 ]

14 голосов
/ 23 апреля 2010

Попробуйте использовать метод JList # sureIndexIsVisible () :

JList wordList = getWordListScroller ();
int lastIndex = wordList.getModel().getSize() - 1;
if (lastIndex >= 0) {
   wordList.ensureIndexIsVisible(lastIndex);
}
0 голосов
/ 15 июня 2010

Хотя этот ответ не работал для меня, я нашел это: http://forums.sun.com/thread.jspa?threadID=623669 (сообщение написано 'Inopia') Который работает отлично.

Как он говорит: «Проблема здесь в том, что может стать немного трудно найти событие, которое срабатывает после обновления ListModel, JList и JScrollPane».

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