簡體   English   中英

無法以編程方式滾動到 JList 中的最后一項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM