2011-05-09 62 views
1

我有JTextArea文本和JScrollPane窗格=新的JScrollPane(文本),我把pane.setAutoScrolls(true)。如何在我的組件文本中添加一些文本,並在窗格末尾滾動(最後一行)?JScrollPane滾動在最後添加的行

+1

IIRC,setAutoScrolls()來拖放行爲只涉及,那就是,如果你開始拖動JScrollPane的內容,並繼續拖外面,然後內容自動滾動到正確的方向。 – jfpoilpret 2011-05-09 09:34:12

回答

1

有沒有可能,你不在美國東部時間? 如果附件沒有在EDT上發生,則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"); 
     } 
    } 

}