Я не уверен, что это отвечает на ваш вопрос, но у меня была похожая проблема. Моя проблема заключалась в том, что при перетаскивании вертикальной ручки JScrollPane JList прокручивался по блокам, а не по единицам, то есть верхняя ячейка всегда отображалась целиком, за исключением случаев, когда список прокручивался до нижнего.
Любопытно, что это происходило только при использовании внешнего вида Windows. Используя L & F по умолчанию, я получил желаемое поведение. И после долгих раскопок я обнаружил этот пост , который показал, что для этого есть свойство L & F. По умолчанию это верно для Windows L & F, но вы можете установить его в false, как это:
UIManager.put("List.lockToPositionOnScroll", Boolean.FALSE);