JTextAreas kan visa stora mängder text på flera rader . När inbäddad i en JScrollPane kommer JTextAreas visas en rullningslist för att möjliggöra för användaren att visa data som inte passar in i komponentens visningsområdet . Du kan programmera din JScrollPane att tveka och sedan automatiskt rulla med en enkel slinga och grundläggande gänga kontroll . Du kan anpassa den tid som ditt program tvekar och hur snabbt det rullar . Instruktioner
1
Skapa en ny JScrollPane och lägg din JTextArea till det med följande kod :
JScrollPane ScrollPane = ny javax.swing.JScrollPane ( ) ; scrollPane.setViewportView ( textarea ) ;
Change " textarea " till namnet på din JTextArea . Ändra kodrad i ditt program där du lägger din JTextArea sin överordnade objekt för att lägga till JScrollPane objektet heter " ScrollPane " istället .
2
Skapa tre heltalsvariabler att lagra tvekan tiden i sekunder innan JTextArea autoscrolls , fördröjningstiden i sekunder mellan varje bläddra och antalet linjer JTextArea ska flytta varje gång den autoscrolls . Använd följande kod :
int hesitationTime = 5 ; int fördröjningstid = 1 ; int scrollIncrement = 10 ;
3
Skapa en ny Try ... Catch uttalande att fånga BadLocationExceptions och InterruptedExceptions med följande kod :
try {
} catch ( BadLocationException ex ) { System.out.println ( " Invalid scroll location " ) ;} catch ( InterruptedException ex ) { System.out.println ( " Thread avbruten " ) ;}
4
Lägg till följande kod efter öppnandet fästet i try att få programmet att vänta under en viss tid innan du börjar att rulla den JTextArea :
Thread.sleep ( hesitationTime * 1000 ) ,
5
Ange följande slinga omedelbart under föregående kodrad för att bläddra igenom texten området vid bestämda intervall :
for (int i = 0 ; i < textArea.getLineCount ( ) ; i + = scrollIncrement ) { Thread.sleep ( fördröjningstid * 1000 ) , textArea.setCaretPosition ( textArea.getLineEndOffset ( i) - 1 ) ; }
6
Bläddra till slutet av JTextArea . Lägg denna kodrad efter För loop :
Thread.sleep ( fördröjningstid * 1000), textArea.setCaretPosition ( textArea.getLineEndOffset ( textArea.getLineCount ( ) - 1 ) ) ;