textArea.setCaretPosition(textArea.getText().length());
或直接控制JScrollPane中的JScrollBar:
JScrollPane sPane = new JScrollPane(textArea);
JScrollBar sBar = sPane.getVerticalScrollBar();
sBar.setValue(int value);//value为具体的位置,需放在JFrame显示后
可用int value = sBar.getValue();//得到上次JScrollBar的位置
sBar.getMaximum()//得到最大
sBar.getMinimum()//得到最小<------ 树欲静而风不止 ------>

解决方案 »

  1.   

    final class MessagePanel extends JPanel { 
    public MessagePanel() {
    messageArea.setLineWrap(true);
    messageArea.setAutoscrolls(true);
    JScrollPane sp = new JScrollPane(
    messageArea, 
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    this.setLayout(new BorderLayout());
    this.add(sp, BorderLayout.CENTER);
    this.setPreferredSize(new Dimension(200, 300));
    }
    }
      

  2.   

    tarea.select(tarea.getText().length(),tarea.getText().length());
      

  3.   

    final class MessagePanel extends JPanel { 
        public MessagePanel() {
          messageArea.setLineWrap(true);
          messageArea.setAutoscrolls(true);
          JScrollPane sp = new JScrollPane(
              messageArea, 
              JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
              JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
          this.setLayout(new BorderLayout());
          this.add(sp, BorderLayout.CENTER);
          this.setPreferredSize(new Dimension(200, 300));
        }
      }这是我一个小程序里面实现的消息面板,参考一下吧。
      

  4.   

    关键是这句:
    messageArea.setAutoscrolls(true);