Я думаю, что вы хотите сделать это прокрутить вниз, когда вы добавляете материал в свой messageList, а не на настройку. Итак, ваш код может выглядеть так:
Adjustable sb = messageScrollList.getVerticalScrollBar()
boolean onBottom = sb.getValue() == sb.getMaximum();
//
// add your message to the JList.
//
if(onBottom) sb.setValue(sb.getMaximum());
В противном случае вам нужно будет сказать, была ли корректировка вызвана изменением модели или мышью, и просматривая документы API. Я не уверен, есть ли способ сделать это легко. Хотя вы могли видеть, возвращает ли AdjustmentEvent.getAdjustmentType()
другие значения в этих случаях, если это так, то вы можете просто использовать оператор if в своем анонимном внутреннем классе.
Еще одна вещь, которую вы могли бы попробовать - это иметь где-то логическую переменную, которая устанавливается при добавлении чего-либо в список. Затем в вашем обработчике вы проверяете, установлена ли переменная. Если это так, вы выполняете настройку (и отменяете переменную), в противном случае вы игнорируете ее. Таким образом, будет добавлена только одна прокрутка вниз для каждого элемента, добавляемого в список.