Java如何产生有滚动条的TextArea?(代码)

当TextArea中消息不断递增时,可以适时滚动以显示最新的信息。
谢谢 wangyi6912的回答。我使用static int SCROLLBARS_VERTICAL_ONLY
只创建并显示垂直滚动条。
现在问题是,我在TextArea中输入内容增多时,显示的是最早的内容而不是最新的,如何使滚动条总是拉置最下边呢?说得好加分!

补充回答:你向TextArea内追加内容可以使用append方法,滚动条自动下滚;如果你使用的是 setText方法,那么需要手工把光标定位到内容的最后,同样可以是滚动条下滚。代码如下:
import java.awt.Frame;
import java.awt.TextArea;

public class TestFrame {

public static void main(String[] args){
Frame jf=new Frame();
TextArea jta=new TextArea();
jf.add(jta);
jf.setSize(400, 300);
jf.setVisible(true);
jta.setText("test\n");
for(int i=0;i<100;i++){
jta.setText(jta.getText()+"hello"+i+"\n");
jta.setCaretPosition(jta.getText().length());
}
// jta.append("hello"+i+"\n"); //这样方式只需要一行代码
}
}

1)如果是JTextArea,需要把JTextArea包含到JScrollPane滚动面板中
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class TestFrame {

public static void main(String[] args){
JFrame jf=new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea jta=new JTextArea();
JScrollPane jp=new JScrollPane(jta);
jf.getContentPane().add(jp);
jf.setSize(400, 300);
jf.setVisible(true);
}
}
2)如果是TextArea,使用缺省方式就可以
import java.awt.Frame;
import java.awt.TextArea;

public class TestFrame {

public static void main(String[] args){
Frame jf=new Frame();
TextArea jta=new TextArea();
jf.add(jta);
jf.setSize(400, 300);
jf.setVisible(true);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-29
这是一个例子:TextArea jta = new TextArea("",20,20,TextArea.SCROLLBARS_BOTH );
下面是原理:

api文档如此描述:
public TextArea(String text,
int rows,
int columns,
int scrollbars)

text - 要显示的文本;如果 text 为 null,则显示空字符串 ""
rows - 行数;如果 rows 小于 0,则将 rows 设置为 0
columns - 列数;如果 columns 小于 0,则将 columns 设置为 0
scrollbars - 确定为查看文本区创建的滚动条类型的常量

scrollbars 有如下几种:
static int SCROLLBARS_BOTH
创建并显示垂直和水平滚动条。
static int SCROLLBARS_HORIZONTAL_ONLY
只创建并显示水平滚动条。
static int SCROLLBARS_NONE
不为文本区创建或显示任何滚动条。
static int SCROLLBARS_VERTICAL_ONLY
只创建并显示垂直滚动条。
第2个回答  2010-01-29
弄个文本域,设置大小,字多了,自动有滚动条了
相似回答