关于java中jtextarea的问题
我想做一个实时显示的jtextarea,里面一直保存20行内容。当超出20行后,往里加一行内容时,就删除以前最开头的一行。求问怎么实现?...
我想做一个实时显示的jtextarea,里面一直保存20行内容。当超出20行后,往里加一行内容时,就删除以前最开头的一行。求问怎么实现?
展开
2个回答
展开全部
用Queue先进先出原则来管理添加的行。示例:
package com.peraglobal.rd.it.re.web;
import java.util.ArrayDeque;
import java.util.Queue;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class CoolCat {
private JTextArea jtextarea;
private int length = 20;
private Queue<String> queue = new ArrayDeque<String>(length);
public CoolCat() {
jtextarea = new JTextArea();
JFrame f = new JFrame();
f.setSize(200, 450);
f.add(jtextarea);
f.setVisible(true);
}
public void updateJTextArea(String s) {
jtextarea.setText(s);
}
public void addContent(String s) {
if (queue.size() == length) {
queue.remove();
}
queue.add(s);
// 更新
s = "";
for (String str : queue) {
s += str;
}
updateJTextArea(s);
}
public static void main(String[] args) throws Exception {
CoolCat cc = new CoolCat();
for (int i = 0; i < 50; i++) {
cc.addContent(i + "\n");
Thread.sleep(500);
}
}
}
追问
能不能不每次都替换textarea里面的所有内容?
追答
能实现,但是非常麻烦。
你的需求:往里加一行内容时,就删除以前最开头的一行。
那相当于所以内容都要往前移,还不如直接替换来的方便。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询