//我的好象可以自动滚动,你看一下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class ScrollApp
{
public static void main(String[] args)
{
ScrollFrame frame=new ScrollFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class ScrollFrame extends JFrame
{
public ScrollFrame()
{ setTitle("Scroll Demo");
setSize(400,500); Container contentPane=getContentPane(); show=new JTextArea(20,10);
JScrollPane pane=new JScrollPane(show); addText=new JButton("ADD TEXT"); addText.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
show.append("gsdklfsdljfsdlkjfdsljfdslkfjslk\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds");
}
}); contentPane.add(pane,BorderLayout.CENTER);
contentPane.add(addText,BorderLayout.SOUTH);
} JButton addText;
JTextArea show;
}

解决方案 »

  1.   

    133.可以将光标定位于指定的位置(滚动效果)
    this.jTextArea2 .setCaretPosition(0);
      

  2.   

    自己直接append上去就可以实现自动滚动。但一接收到其他用户的信息时。就一直不能滚动了。实在是疑惑。。???
    大家好好想想啊。我想得快疯了!!!
      

  3.   

    你根据我的程序自己变动一下,应该没有问题的。import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    /**
     * <p>Title: This follow is newman's writing</p>
     * <p>Description: I want better writing ,instead of best one!</p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: [email protected]</p>
     * @author Newman
     * @version 1.0
     */public class ScrollFrame extends JFrame{
        JPanel jPanel1 = new JPanel();
        JScrollPane jScrollPane1 = new JScrollPane();
        BorderLayout borderLayout1 = new BorderLayout();
        JTextArea jTextArea1 = new JTextArea();
        JPanel jPanel2 = new JPanel();
        String str="gsdklfsdljfsdlkjfdsljfdslkfjslk\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
                    "end sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfs\n";
        JButton jButton1 = new JButton();
        JButton jButton2 = new JButton();
        public ScrollFrame() {
            try {
                jbInit();
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            ScrollFrame scrollFrame1 = new ScrollFrame();  
            scrollFrame1.setSize(200,300);
            scrollFrame1.show();
        }
        private void jbInit() throws Exception {
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
            jPanel1.setLayout(borderLayout1);
            jTextArea1.setText(this.str );
            jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            jButton1.setText("end");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jButton1_actionPerformed(e);
                }
            });
            jButton2.setText("start");
            jButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jButton2_actionPerformed(e);
                }
            });
            this.getContentPane().add(jPanel1, BorderLayout.CENTER);
            jPanel1.add(jScrollPane1,  BorderLayout.CENTER);
            jPanel1.add(jPanel2,  BorderLayout.SOUTH);
            jPanel2.add(jButton1, null);
            jPanel2.add(jButton2, null);
            jScrollPane1.getViewport().add(jTextArea1, null);
        }    void jButton1_actionPerformed(ActionEvent e) {//end
            int height=10;
            Point p = new Point();
            p.setLocation(0,this.jTextArea1.getLineCount()*height);
            this.jScrollPane1.getViewport().setViewPosition(p);
        }    void jButton2_actionPerformed(ActionEvent e) {//start
            Point p = new Point(0,0);
            this.jScrollPane1.getViewport().setViewPosition(p);
        }
    }
      

  4.   

    还有,你不要用append,试试用settext!!!!!
      

  5.   

    楼主,我的已经搞定了,你还搞定了没?
    从newman0708(nch)的例子可以解决这个问题。多想想 :)
      

  6.   

    ok.谢谢大家了。特别是newman0708。。谢咯