Mam następny kod:JScrollPane i JList Autoprzewijanie
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());
}
});
przewija auto w dół. Ale jeśli spróbuję przewinąć do tyłu, aby ponownie przeczytać wiadomość, zmusza przewijanie w dół. Jak mogę to naprawić?
Typ dopasowania jest taki sam w obu przypadkach. Próbowałem to przewinąć w dół, jeśli dodano wiadomość. Ale jeśli to zrobię, ostatnia dodana wiadomość nie będzie widoczna. Nie przewraca się w dół. Jak mogę to rozwiązać? – dododedodonl
Hmm ... Cóż, jedną rzeczą, którą możesz zrobić, to mieć zmienną boolowską, która zostanie ustawiona, gdy dodasz coś do listy. Następnie w programie obsługi sprawdzasz, czy zmienna jest ustawiona. Jeśli tak, to wykonasz regulację (i zresetujesz zmienną), w przeciwnym razie zignorujesz ją. W ten sposób do listy zostanie dodany tylko jeden przewijany element. –