У меня есть следующий код:JScrollPane и JList автопрокрутка
listModel = new DefaultListModel();
listModel.addElement(dateFormat.format(new Date()) + ": Msg1");
messageList = new JList(listModel);
messageList.setLayoutOrientation(JList.VERTICAL);
messageScrollList = new JScrollPane(messageList);
messageScrollList.setPreferredSize(new Dimension(500, 200));
messageScrollList.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
e.getAdjustable().setValue(e.getAdjustable().getMaximum());
}
});
Он автоматически прокручивается вниз. Но, если я попытаюсь прокрутить назад, чтобы перечитать сообщение, он запустит прокрутку вниз. Как я могу это исправить?
Тип регулировки одинаковый в обоих случаях. Я пробовал это прокручивать вниз, если сообщение добавлено. Но если я это сделаю, последнее добавленное сообщение не будет видно. Он прокручивается недостаточно. Как я могу это решить? – dododedodonl
Хм ... Ну, одна вещь, которую вы могли бы сделать, - иметь где-то булевскую переменную, которая устанавливается, когда вы добавляете что-то в список. Затем в вашем обработчике вы проверяете, установлена ли переменная. Если это так, вы выполняете настройку (и отключите переменную) в противном случае, вы игнорируете ее. Таким образом, в список будет добавлен только один прокрутка вниз. –