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());
}
});
自动向下滚动。但是,如果我尝试向上滚动以重新阅读消息,则会强制向下滚动。我怎样才能解决这个问题?
问题答案:
添加新邮件时,使用尺寸与邮件窗格的首选大小相同scrollRectToVisible()
的JList
进行调用Rectangle
。给定垂直取向,它可方便地使的优选尺寸JScrollPane
的JViewport
邮件面板的高度的整数倍。另请参阅:
如何使用滚动窗格
。
附录:有关 文本区域滚动的 引人入胜的讨论也可能会有所帮助。