你可以试试先调用JTextArea的paintImmediately方法再调用JTextArea的setCaretPosition方法

解决方案 »

  1.   

    具体写一下可以吗,谢谢public static void main(String[] args) {
    int a = 200;
    int b = 200;
    String str = "南安军\n梅花南北路,风雨湿征衣。\n出岭同谁出?归乡如此归!\n山河千古在,城郭一时非。\n饿死真吾志,梦中行采薇。";
    JTextArea jt = new JTextArea();//不要使用new JTextArea(a,b)
    jt.setBounds(0, 0, a, b);
    jt.setLineWrap(true);//自动换行
    jt.setText(str);
    JScrollPane js = new JScrollPane(jt);
    js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);  
    js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
    JFrame jf = new JFrame();
    jf.setBounds(0, 0, a, b);
    jf.setTitle("Test");
            jf.setVisible(true);
            jf.getContentPane().add(js);
    }前面说的paintImmediately是用来实时刷新的,你可以不用理会
      

  2.   

    具体写一下可以吗,谢谢这个不用设定把,你textarea内容超过设定的文本框大小就会自动出现滚动条,输入行数越多,滚动条自己会变化。
    public class JframeDemo4 extends JFrame {

    JTextArea jta=new JTextArea();
    JScrollPane jsp=new JScrollPane(jta); public JframeDemo4() throws HeadlessException {
    super();
    // TODO Auto-generated constructor stub
    setSize(300, 200);
    setLayout(null);
    jsp.setSize(200,100);
    add(jsp);
    setVisible(true);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    new JframeDemo4(); }}