我有一个嵌套在JScrollPane中的JList。当我向JList添加项目时,我希望JScrollPane自动滚动到JList的底部,以便最后一项可见。为此,我有以下代码:
getWordListScroller().getVerticalScrollBar().getModel().setValue(getWordListScroller().getVerticalScrollBar().getModel().getMaximum());
但是,当我尝试使用此代码时,JScrollPane仅滚动到倒数第二个项目,将最后一个项目排除在外。这绝不是理想的。我已经尝试将值添加到getMaximum(),但问题仍然存在。
如何让JScrollPane滚动到最底层?
答案 0 :(得分:14)
尝试使用JList#ensureIndexIsVisible()方法:
JList wordList = getWordListScroller ();
int lastIndex = wordList.getModel().getSize() - 1;
if (lastIndex >= 0) {
wordList.ensureIndexIsVisible(lastIndex);
}
答案 1 :(得分:0)
虽然这个答案对我不起作用,但我发现了这个: http://forums.sun.com/thread.jspa?threadID=623669(由'inopia'撰写的帖子) 哪个效果很好。
正如他所说: “这里的问题是,在ListModel,JList和JScrollPane都已更新之后,找到一个触发的事件会变得有点困难。”
答案 2 :(得分:0)
此代码段对我有用
private JList<String> lstDebug;
private void scrollToBottom(){
int lastIndex = lstDebug.getModel().getSize()-1;
if(lastIndex >= 0){
lstDebug.ensureIndexIsVisible(lastIndex);
}
}