关于java中jtextarea的问题

我想做一个实时显示的jtextarea,里面一直保存20行内容。当超出20行后,往里加一行内容时,就删除以前最开头的一行。求问怎么实现?... 我想做一个实时显示的jtextarea,里面一直保存20行内容。当超出20行后,往里加一行内容时,就删除以前最开头的一行。求问怎么实现? 展开
 我来答
kevintop3
2013-10-21 · TA获得超过1.5万个赞
知道小有建树答主
回答量:890
采纳率:100%
帮助的人:537万
展开全部
用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里面的所有内容?
追答
能实现,但是非常麻烦。

你的需求:往里加一行内容时,就删除以前最开头的一行。

那相当于所以内容都要往前移,还不如直接替换来的方便。
百度网友48c937c69
2013-10-21 · TA获得超过3126个赞
知道小有建树答主
回答量:1591
采纳率:0%
帮助的人:791万
展开全部
以前好像用KeyListener做过类似的功能,你可以试试。
追问
能具体点么?谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式