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
弄个文本域,设置大小,字多了,自动有滚动条了

Java滚动条如何实现
向JTextArea中添加滚动条 JTextArea txaDisplay = new JTextArea();JScrollPane scroll = new JScrollPane(txaDisplay);\/\/分别设置水平和垂直滚动条自动出现 scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_N...

java如何在textarea的左边加滚动条在左边
你好!<textarea rows="" cols=""\/> 当你的文本域超出它的范围时,它会自动为你加滚动条!这种方式的缺点在于它文本域的大小会随字体大小的改变而改变!建议用<textarea style="width:200;height:50"\/> 希望你能豁然开朗,对你有帮助!

Java Applet TextArea类
第一个问题 使用构造函数TextArea(String text, int rows, int columns, int scrollbars)可以实现是否有滚动条 通过这个可以实现自动换行 如下:private TextArea content = new TextArea("", 5, 40, TextArea.SCROLLBARS_VERTICAL_ONLY);第二个问题 setColumn(int)这个方法设置setColumn(int)显示的...

如何在java中对TextArea加竖直的滚动条使得下是内容可以超出最初的设定...
JScrollPane是一个带滚动条的pane,你可以把任何需要滚动的东西放在这里面实现滚动

textarea滚动条怎么用
通过js来实时控制textarea的高度。(1)首先创建一个函数,计算因边框和轮廓产生的高度差异 (2)设置高度为0以防需要收缩(高度)(3)设置正确的高度 scrollHeight 是文本内容的全部高度,而不仅仅是可见部分的 (4)如果文本域有边距,我们需要设置box-sizing: border-box (5)我们不需要滚动条 (...

textarea 如何设置滚动条
在测试scrollWidth、clientWidth、offsetWidth时需要让<textarea>可以出现水平滚动条,但是发现<textarea>默认会自动换行,不能直接出现水平滚动条,所以为了实现该效果,需要对<textarea>做一些处理,输入<textarea wrap="off" style="overflow:scroll;"><\/textarea>就可以设置滚动条了。

Textarea组件可以不用动作脚本,就可以添加文字和设置滚动条吗
textarea本身通过设置固定的属性,你要是增加内容顶多就是出现滚动条,比如<textarea rows="3" ><\/textarea>就是固定三行内容,超过三行就自动出现滚动条,至于你说的是不是动态添加比如使用ajax动态显示内容的话那就一定得使用脚本了,因为内容多少不确定,你必须先计算内容有多宽然后在放进你的页面的...

如何设置textarea中滚动条一直滚动到最后
通过设置scrollTop属性,例如textarea的id为text, 可以通过这行代码:text.getElementById(id).scrollTop=text.getElementById(id).scrollHeight; 来设置。或者详细的:var show=document.getElementById("text");show.scrollTop = show.scrollHeight;

java 关于滚动条和textarea中文字的高亮问题
TextArea不具备文本样式功能,你只能将查找到的文字选中,建议使用JTextPane组件,它具有样式编辑功能,可以实现类似于QQ聊天内容那样的功能,可以加某段文字的背景色、插入图片、改变文字颜色、文字大小等等。我以前Blog中写过一个小例子,你可以参考下。http:\/\/blog.csdn.net\/mq612\/archive\/2006\/09\/20\/...

如何创建一个高度自适应的textarea
另一种实现就是,你在网上搜索就会得到的答案,用代码来说话就是$('textarea').keyup(function () { $(this).height(this.scrollHeight); });基本上所有的jquery插件核心都是这段代码,但是实际上它的效果非常坑爹它响应的是keyup事件,因此也就是说肯定会有延迟。其视觉表现就是,先出现一个...

相似回答