Как сделать плавную прокрутку для списков в Swing - PullRequest
4 голосов
/ 16 июня 2009

На iPhone прокрутка списков анимирована плавно. Не обращая внимания на эффект инерции (хотя было бы неплохо) - как бы я сделал плавную прокрутку списка Swing, как это?

Есть и другие примеры, например, браузеры, но они используют нативные элементы управления, которые я не могу использовать с Swing.

Ответы [ 2 ]

4 голосов
/ 16 июня 2009

Если вы используете JList, попробуйте перезаписать getScrollableUnitIncrement(Rectangle, int, int) и getScrollableBlockIncrement(Rectangle, int, int), чтобы получить пользовательское приращение. Например, 2 пикселя вместо значений по умолчанию, рассчитанных по высоте записи в списке.

3 голосов
/ 21 декабря 2010

Я не уверен, что это отвечает на ваш вопрос, но у меня была похожая проблема. Моя проблема заключалась в том, что при перетаскивании вертикальной ручки JScrollPane JList прокручивался по блокам, а не по единицам, то есть верхняя ячейка всегда отображалась целиком, за исключением случаев, когда список прокручивался до нижнего.

Любопытно, что это происходило только при использовании внешнего вида Windows. Используя L & F по умолчанию, я получил желаемое поведение. И после долгих раскопок я обнаружил этот пост , который показал, что для этого есть свойство L & F. По умолчанию это верно для Windows L & F, но вы можете установить его в false, как это:

UIManager.put("List.lockToPositionOnScroll", Boolean.FALSE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...