2010-04-23 47 views
5

我有一個JList嵌套在JScrollPane中。當我將項目添加到JList時,我希望JScrollPane自動滾動到JList的底部,以便最後一個項目可見。要做到這一點,我有以下代碼:無法以編程方式滾動到JList中的最後一項

getWordListScroller().getVerticalScrollBar().getModel().setValue(getWordListScroller().getVerticalScrollBar().getModel().getMaximum()); 

,當我嘗試使用此代碼,但是,JScrollPane的只有滾動到倒數第二個項目,剩下的最後一個項目拿出來看。這是不可取的。我試着將值添加到getMaximum(),但問題仍然存在。

如何讓JScrollPane滾動到最底部?

回答

14

嘗試使用JList#ensureIndexIsVisible()方法:

JList wordList = getWordListScroller(); 
int lastIndex = wordList.getModel().getSize() - 1; 
if (lastIndex >= 0) { 
    wordList.ensureIndexIsVisible(lastIndex); 
} 
+0

我剛剛發現我自己和它的作品非常漂亮。 – 2010-04-23 02:34:59

+2

不錯。順便說一句。要記住的事情(因爲,強制滾動與更改內容有關)http://stackoverflow.com/a/7114267/210342 – greenoldman 2011-12-03 07:38:55

+0

這有效!謝謝。 – Horizon 2014-02-15 15:46:29

0

雖然這個答案並沒有爲我工作,我發現這一點: http://forums.sun.com/thread.jspa?threadID=623669(後由'inopia書面) 這完美的作品。

正如他所說: 「這裏的問題是,在ListModel,JList和JScrollPane都被更新之後,發現觸發事件會變得有點困難。」