[英]Unable to programatically scroll to last item in JList
我有一個嵌套在 JScrollPane 中的 JList。 當我向 JList 添加項目時,我希望 JScrollPane 自動滾動到 JList 的底部,以便最后一個項目可見。 為此,我有以下代碼:
getWordListScroller().getVerticalScrollBar().getModel().setValue(getWordListScroller().getVerticalScrollBar().getModel().getMaximum());
但是,當我嘗試使用此代碼時,JScrollPane 僅滾動到倒數第二個項目,而將最后一個項目留在視野之外。 這絕不是可取的。 我嘗試向 getMaximum() 添加值,但問題仍然存在。
如何讓 JScrollPane 滾動到最底部?
嘗試使用JList#ensureIndexIsVisible()方法:
JList wordList = getWordListScroller ();
int lastIndex = wordList.getModel().getSize() - 1;
if (lastIndex >= 0) {
wordList.ensureIndexIsVisible(lastIndex);
}
雖然這個答案對我不起作用,但我發現這個: http ://forums.sun.com/thread.jspa?threadID=623669(帖子由 'inopia' 撰寫)它完美地工作。
正如他所說:“這里的問題是,在 ListModel、JList 和 JScrollPane 都更新后,找到觸發的事件會變得有點困難。”
這個片段對我有用
private JList<String> lstDebug;
private void scrollToBottom(){
int lastIndex = lstDebug.getModel().getSize()-1;
if(lastIndex >= 0){
lstDebug.ensureIndexIsVisible(lastIndex);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.