2011-05-09 3 views
1

JTextArea 텍스트가 있고 JScrollPane pane = 새 JScrollPane (텍스트)인데 pane.setAutoScrolls (true)를 넣습니다. 마지막 구획 (마지막 줄)에서 스크롤하는 구성 요소 텍스트에 일부 텍스트를 추가하면 어떻게 얻을 수 있습니까?JScrollPane 마지막으로 추가 된 행에서 스크롤

+1

IIRC, setAutoScrolls()가 동작을 drag'n'drop 관련된 경우에만, 당신이 JScrollPane의 내용을 드래그 시작하고 끌어 갈 경우 즉, 바깥쪽에 있으면 내용이 자동으로 올바른 방향으로 스크롤됩니다. – jfpoilpret

답변

1

EDT에 있지 않은 것이 가능합니까? EDT에서 append가 발생하지 않으면 JTextArea의 위치가 업데이트되지 않습니다.

짧은은 실행 가능한 예제는이 동작을 보여 :

import java.awt.TextArea; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.SwingUtilities; 


public class Sample { 

    public static void main(String[] args) { 

     /* 
     * Not on EDT 
     */ 
     showAndFillTextArea("Not on EDT", 0, 0); 

     /* 
     * On EDT 
     */ 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       showAndFillTextArea("On EDT", 400, 0); 
      } 
     }); 
    } 

    private static void showAndFillTextArea(String title, int x, int y) { 

     JFrame frame = new JFrame(title); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JTextArea textArea = new JTextArea(20, 20); 
     JScrollPane scrollPane = new JScrollPane(textArea); 
     frame.getContentPane().add(scrollPane); 
     frame.pack(); 
     frame.setLocation(x, y); 
     frame.setVisible(true); 
     for(int i = 0; i < 50; i++) { 
      textArea.append("Line" + i + "\n"); 
     } 
    } 

}