Hvordan få en JTextArea til å nøle og bla gjennom data i Java

JTextAreas kan vise store mengder tekst over flere linjer. Når innebygd i en JScrollPane vil JTextAreas vise et rullefelt for å tillate brukeren å vise data som ikke passer i komponentens visningsområdet. Du kan programmere JScrollPane å nøle og bla deretter automatisk med en enkel sløyfe og grunnleggende tråd kontroll. Du kan tilpasse hvor lenge programmet nøler og hvor raskt det ruller.

Bruksanvisning

1 Opprett en ny JScrollPane og legge til JTextArea til den med følgende kode:

JScrollPane scrollPane = new javax.swing.JScrollPane ();
scrollPane.setViewportView (textarea);

Change "textarea" til navnet på JTextArea. Endre kodelinje i programmet der du avgi din JTextArea til sin overordnede objektet for å legge til JScrollPane objekt kalt "scrollPane" i stedet.

2 Lag tre heltallsvariabler å lagre nøling i sekunder før JTextArea autoscrolls, forsinkelsen i sekunder mellom hver rull og antall linjer JTextArea skal bevege seg hver gang det autoscrolls. Bruk følgende kode:

int hesitationTime = 5;
int delayTime = 1;
int scrollIncrement = 10;

3 Opprett en ny prøve ... Catch uttalelse til fange BadLocationExceptions og InterruptedExceptions med følgende kode:

try {

} Catch (BadLocationException ex) {

System.out.println("Invalid scroll location");

} Catch (InterruptedException ex) {

System.out.println("Thread interrupted");

}

4 Legg til følgende kode etter åpningen braketten i Prøv uttalelse til føre til at programmet til å vente på en bestemt tid før du begynner å rulle JTextArea:

Thread.sleep (hesitationTime * 1000);

5 Skriv inn følgende løkke umiddelbart under forrige linje med kode for å bla gjennom tekstområdet ved gitte intervaller:

for (int i = 0; i <textArea.getLineCount (); i + = scrollIncrement) {

Thread.sleep(delayTime * 1000);
textArea.setCaretPosition(textArea.getLineEndOffset(i) - 1);

}

6 Bla til helt på slutten av JTextArea. Legg til denne linjen med kode etter For bue:

Thread.sleep (delayTime * 1000);
textArea.setCaretPosition (textArea.getLineEndOffset (textArea.getLineCount () - 1));