2011-12-11 117 views
2

我一直在嘗試創建一個滾動窗格,當用戶在窗口中添加更多文本行時,該窗格會自動保持向下滾動。我實現了這一點:JScrollPane - 自動滾動到底部?

pane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() { 
    public void adjustmentValueChanged(AdjustmentEvent e) { 
     e.getAdjustable().setValue(e.getAdjustable().getMaximum()); 
    } 
}); 

「窗格」是一個JScrollPane持有JList。不幸的是,上面的代碼會將滾動條粘到窗格的底部(這是我想要的),但是我無法將滾動條從其位置移動(所以現在它被卡在底部)。有沒有一種簡單的方法讓滾動條粘到底部,但仍然可以在其他地方滾動?

謝謝!

回答

7

當您添加一個項目到JList中,你可以使用的方法:

list.ensureIndexIsVisible(...) 

其中指數是在列表的最後一個項目的索引。

+1

+1我真的需要這個爲我的應用程序! – GETah

+0

好的,但是如果你添加一個'AbstractListModel'中的元素會怎樣。其中,我觸發ListModel的fireIntervalAdded,但是如何讓JList滾動。 我教過關於在JList事件中捕獲元素的添加,但是我找不到任何這樣的事件。 我已經講過直接從ListModel滾動,但由於這個ListModel可以在多個JLists中使用,我如何從ListModel內部獲得對綁定JList的引用? – JFTxJ