Ich habe den nächsten Code bekam:JScrollPane und JList Autoscroll
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());
}
});
Es Auto nach unten scrollt. Wenn ich jedoch versuche, zurückzuscrollen, um eine Nachricht erneut zu lesen, wird eine Bildlaufoperation erzwungen. Wie kann ich das beheben?
Der Einstellungstyp ist in beiden Fällen identisch. Ich habe dies versucht, um nach unten zu scrollen, wenn eine Nachricht hinzugefügt wird. Aber wenn ich das tue, ist die letzte hinzugefügte Nachricht nicht sichtbar. Es scrollt nicht genug nach unten. Wie kann ich das lösen? – dododedodonl
Hmm ... Nun, eine Sache, die Sie tun könnten, wäre, eine boolesche Variable irgendwo zu haben, die gesetzt wird, wenn Sie etwas zur Liste hinzufügen. Dann prüfen Sie in Ihrem Handler, ob die Variable gesetzt ist. Wenn dies der Fall ist, führen Sie die Anpassung durch (und deaktivieren die Variable), andernfalls ignorieren Sie sie. Auf diese Weise wird nur ein Scroll-Down pro Element zur Liste hinzugefügt. –