无法以编程方式滚动到JList中的最后一项

Chr*_*ieb 5 java swing

我有一个嵌套在JScrollPane内的JList.当我向JList添加项目时,我希望JScrollPane自动滚动到JList的底部,以便最后一项可见.为此,我有以下代码:

getWordListScroller().getVerticalScrollBar().getModel().setValue(getWordListScroller().getVerticalScrollBar().getModel().getMaximum());
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用此代码时,JScrollPane仅滚动到倒数第二个项目,将最后一个项目排除在视图之外.这绝不是理想的.我已经尝试将值添加到getMaximum(),但问题仍然存在.

如何让JScrollPane滚动到最底层?

RTB*_*ard 14

尝试使用JList#ensureIndexIsVisible()方法:

JList wordList = getWordListScroller ();
int lastIndex = wordList.getModel().getSize() - 1;
if (lastIndex >= 0) {
   wordList.ensureIndexIsVisible(lastIndex);
}
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.顺便说一句.要记住的事情(因为,强制滚动与更改内容有关)http://stackoverflow.com/a/7114267/210342 (2认同)