J'ai le code suivant:JScrollPane et JList défilement automatique
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());
}
});
Il défile automatique vers le bas. Mais, si j'essaie de revenir en arrière pour relire un message, cela force un défilement vers le bas. Comment puis-je résoudre ce problème?
Le type d'ajustement est le même dans les deux cas. J'ai essayé ceci pour défiler vers le bas si un message est ajouté. Mais si je fais cela, le dernier message ajouté n'est pas visible. Il ne défile pas assez bas. Comment puis-je résoudre cela? – dododedodonl
Hmm ... Eh bien, une chose que vous pourriez faire serait d'avoir une variable booléenne quelque part qui est définie lorsque vous ajoutez quelque chose à la liste. Ensuite, dans votre gestionnaire, vous vérifiez si la variable est définie. Si oui, vous effectuez l'ajustement (et supprimez la variable) sinon vous l'ignorez. De cette façon, il n'y aura qu'un seul défilement par élément ajouté à la liste. –