2012-01-25 22 views
12

Ho un'area di testo con barra di scorrimento. A intervalli regolari, aggiungo nuove righe di testo. Vorrei che l'area di testo scorra automaticamente nella voce più in basso (la più recente) ogni volta che viene aggiunta una nuova riga. Come posso realizzare questo?Scorrere automaticamente fino alla fine di un'area di testo

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

fa 'WebTextArea' estendono' java.awt.TextArea' o 'javax.swing.JTextArea'? Si prega di essere specifici nei post futuri. È abbastanza difficile eseguire il debug di snippet di codice nei forum visitati da persone che parlano lingue diverse e che si interrogano sulle classi esatte utilizzate. –

risposta

19

Dai un'occhiata alla proprietà updatePolicy di DefaultCaret: si potrebbe fare quello che vuoi

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

Un nice summary of options da Rob (@camickr)

+1

** Ricevo l'errore in IDE e ho inserito DefaultCaret. ad ALWAYS_UPDATE come ** 'caret.setUpdatePolicy (DefaultCaret.ALWAYS_UPDATE);' ** dove devo inserire questo codice? quando dovrei chiamare il codice che hai fornito e dove? ** – itro

+0

sembra non funzionare in java8 – poordeveloper

+0

@ZhouHuabing interessante .. controllerà, grazie. – kleopatra

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

Ogni volta che aggiungo del testo a taxArea dovrei chiamare 'textArea.setCaretPosition (textArea.getDocument(). GetLength());'? ** C'è un altro modo per farlo automaticamente? C'è un listener per textArea da usare? ** – itro

+1

@itro - Perché non aggiungere una funzione per aggiungere del testo. Ad esempio, ho una funzione per aggiungere del testo alla mia area di testo. Semplice questione di aggiungere una linea in più alla mia funzione per aggiornarla automaticamente. – Sh4d0wsPlyr

Problemi correlati