2012-01-25 2 views
12

У меня есть текстовая область со строкой прокрутки. Через определенные промежутки времени я добавляю к нему новые строки текста. Я бы хотел, чтобы текстовая область автоматически прокручивалась до самой нижней записи (самой новой) всякий раз, когда добавляется новая строка. Как я могу это сделать?Автоматически прокручивать нижнюю часть текстовой области

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

Does '' WebTextArea' продлить java.awt.TextArea' или 'javax.swing.JTextArea'? Пожалуйста, будьте конкретны в будущих сообщениях. Довольно сложно отлаживать фрагменты кода на форумах, которые посещают люди, которые говорят на разных родных языках, и задаются вопросом о том, какие именно классы используются. –

ответ

19

Посмотрите собственности updatePolicy из DefaultCaret: он может делать то, что вы хотите

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

nice summary of options Роб (@camickr)

+1

** Я получаю erro в IDE, и я ставлю DefaultCaret. в ALWAYS_UPDATE, например ** 'caret.setUpdatePolicy (DefaultCaret.ALWAYS_UPDATE);' ** где я должен поместить этот код? когда я должен назвать код, который вы предоставили, и где? ** – itro

+0

похоже не работает в java8 – poordeveloper

+0

@ZhouHuabing интересно .. проверит, спасибо. – kleopatra

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

Каждый раз, когда я добавляю текст в taxArea, я должен позвонить 'textArea.setCaretPosition (textArea.getDocument(). GetLength());'? ** Есть ли другой способ сделать это автоматически? Есть ли прослушиватель textArea для использования? ** – itro

+1

@itro - Почему бы не добавить функцию для добавления текста. Например, у меня есть функция для добавления текста в текстовую область. Простое добавление дополнительной строки к моей функции для ее автоматического обновления. – Sh4d0wsPlyr