当前位置: 首页 > 知识库问答 >
问题:

JTextArea自动更新和文本限制

从烈
2023-03-14

我试图用Jtextarea做一个聊天盒。它将在0处插入新的文本行,以便在textarea的顶部逐行添加文本。

我将用换行符分隔每一行,并在适当的位置换行,但我无法找到一种方法来限制一次可见的消息数量。因此,如果我设置了100个限制,我将如何使它不能超过100个可见的消息?我希望文本自动擦除最后一行并插入新的一行。

ArrayList<String> notice = new ArrayList<>();


public void notice(String user, String msg) {
  notice.add(user+": "+msg+"\n");
    if (notice.size() > 100) {
        notice.remove(0);
        getFrame().getGameGUI().getChat(0).setText("");
        for (String s : notice) {
            getFrame().getGameGUI().getChat(0).insert(s,0); //is this ideal with users regularly sending messages?
        }
    } else
        getFrame().getGameGUI().getChat(0).insert(user+": "+msg+"\n",0);
 }

仅供参考,getFrame().getGameGui().getChat(0)用于检索JTextArea“NoticeChat”。我在一个TabbedPane中有多个JTextareA,所以我使用getChat来检索它们,而不是为每个都创建一个新函数。

如果有什么混淆,很抱歉。我的主要问题是:当用户不断地向其插入新的文本行时,更新有限大的JTextArea的理想方法是什么?

共有1个答案

阎德辉
2023-03-14

使用documentfilter,如在实现文档筛选器时所示。使用FilterBypsing,可以获得对文本区域PlainDocument的引用,并且可以检查根元素返回的行数。然后可以在行数超过100时删除第一行。

 类似资料:
  • 问题内容: 在做一个小发布并将其标记之前,我想更新package.json以反映该程序的新版本。 有没有一种方法可以自动编辑文件? 需要帮助吗? 问题答案: 可能是正确的答案。只给一个替代我建议咕噜凸点。它由angular.js的一名成员维护。 用法: 如果仍然使用grunt,那可能是最简单的解决方案。

  • autoUpdater模块为Squirrel框架提供了一个接口。 进程: 主进程​ 您可以使用这些项目之一进行快速启动多平台发布服务器以分发应用程序: nuts:为您的应用程序使用智能版本服务器,使用GitHub作为后端。使用Squirrel(Mac和Windows)自动更新 electron-release-server:功能齐全,自主托管的electron应用程序的发布服务器,兼容自动更新器

  • 之前不了解,关于文件自动更新,原来也是可以根据需要设置不同更新模式的。 说个最实际的例子: 之前用写python脚本,在windows的cmd中输入脚本去执行,执行过程中,会生成一个log文件:xxx.log, 另外每次执行不同的命令,对应的log文件内容也会变化, 而该log文件以及对应的python脚本xxx.py文件,我都是用Notepad++打开的, 所以,执行完cmd中的python脚本

  • 问题内容: 我一直在尝试为我的文本更改事件处理机制。就我的目的而言,只要。的文本发生更改,就必须触发一个事件。我尝试使用该接口,这是我的代码。 当文本区域的文本与硬编码的文本匹配时,什么也没发生。如何为此更改事件。 可以通过实现目标吗?如果可以,那怎么办? 问题答案: 我将通过(实际上是一个PlainDocument)获得JTextArea的文档,并使用DocumentListener来侦听更改。

  • 所以我在我的桌面应用程序中创建了一个文本限制功能,但我似乎无法让它在准确的位置停止退行距。 限制的作用是,当用户没有单击Submit按钮时,它将函数CheckSize()作为一个新线程运行。CheckSize()查看jTextArea的内容,它有长度条件。一旦满足溢出长度(256个字符),就调用enforceLimit()将插入符号放在文本区域的末尾,并退格符一个字符。 现在的问题是,在测试过程中

  • 问题内容: 我编写了一个脚本,该脚本可以通过从网站上下载最新版本并覆盖正在运行的脚本来保持最新状态。 我不确定更新脚本后重新启动脚本的最佳方法是什么。 有任何想法吗? 我真的不想要一个单独的更新脚本。哦,它也必须在两个linux / windows上都可以工作。 问题答案: 在Linux或任何其他形式的Unix中,os.execl和它的朋友是一个不错的选择- 您只需要重新执行sys.executa