我测试了一下,没问题发给,你看一下:
package testApplet;
import java.awt.Container;import javax.swing.*;public class testcsdn {



public interface ScrollAutoDownListener
{
  public void autoDown();
} public class InfoDisplayer extends JTextArea{
  private ScrollAutoDownListener listener=null;   public void append(String msg){
super.append(msg); if (listener!=null){
  listener.autoDown () ;
}
  }   public void addAutoScrollListener(ScrollAutoDownListener listener){
this.listener=listener;
  }
} public class JAutoDownPane extends JScrollPane implements ScrollAutoDownListener
{
  public JAutoDownPane(JComponent comp)
  {
super(comp);
if (comp instanceof InfoDisplayer){
  ((InfoDisplayer)comp).addAutoScrollListener(this);
}
  }   public void autoDown(){
JScrollBar sb=getVerticalScrollBar();
sb.setValue(sb.getMaximum());
  }
}

public static void main(String[] args) {
JFrame f = new JFrame("Simple Frame");
f.setSize(250, 50);
Container c = f.getContentPane();

    testcsdn self = new testcsdn();
    InfoDisplayer txt = self.new InfoDisplayer();
    txt.append("111\r\n222");
JAutoDownPane sp = self.new JAutoDownPane(txt);
c.add(sp);
f.setVisible(true);
}
}

解决方案 »

  1.   

    我将楼上的代码考过来,建了个test类,居然还是不行
    我将append循环了一下,man函数如下public static void main(String[] args)
      {
        JFrame f = new JFrame("Simple Frame");
        f.setSize(250, 300);
        Container c = f.getContentPane();    Test self = new Test();
        InfoDisplayer txt = self.new InfoDisplayer();
        for (int i = 0; i < 300; i++)
        {
          txt.append("111\r\n222");
        }
        JAutoDownPane sp = self.new JAutoDownPane(txt);
        c.add(sp);
        f.setVisible(true);
      }
      

  2.   

    此恨不关scrollpane
    呵呵,试试JTextArea里面的select方法