2012-01-25 60 views
12

我有一個滾動條的文本區域。我會定期添加新的文本行。我希望文本區域在添加新行時自動滾動到最底部的條目(最新的條目)。我怎樣才能做到這一點?自動滾動到文本區域的底部

textAreaStatus = new WebTextArea(); 
scrollPane = new JScrollPane(textAreaStatus); 
textAreaStatus.setBackground(Color.black); 
textAreaStatus.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); 
+1

不'WebTextArea'延長'什麼java.awt.TextArea'或'javax.swing.JTextArea'?請在以後的帖子中具體說明。在講許多不同的本地語言的人訪問的論壇上調試代碼片段已經很困難,因爲他們想知道所用的確切類別。 –

回答

19

看一看DefaultCaret的updatePolicy屬性:它可能做你想做

DefaultCaret caret = (DefaultCaret) textArea.getCaret(); 
caret.setUpdatePolicy(ALWAYS_UPDATE); 

一個nice summary of options羅布(@camickr)

+1

**我在IDE中得到錯誤,我把DefaultCaret。 ALWAYS_UPDATE像**'caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);'**我應該在哪裏放這段代碼?我應該什麼時候打電話給你提供的代碼,並在哪裏?** – itro

+0

似乎不能在java8 – poordeveloper

+0

@周武冰有趣..會檢查,謝謝。 – kleopatra

14
textArea.setCaretPosition(textArea.getDocument().getLength()); 
+0

每當我將文本添加到taxArea時,我都應該調用 'textArea.setCaretPosition(textArea.getDocument()。getLength());'? **是否有任何其他方式自動執行它?是否有任何textArea的監聽器?** – itro

+1

@itro - 爲什麼不添加一個函數來添加文本。例如,我有一個將文本添加到我的文本區域的功能。簡單的添加一個額外的行到我的函數自動更新它。 – Sh4d0wsPlyr