Java Swing:如何获取包括刚刚键入的字符在内的 TextArea 值?

2023-12-11

键入按键后获取 TextArea 值(包括该字符)的最佳方法是什么?

如果我在事件侦听器中执行此操作,textarea.getText()返回不带最终新字符的值。

基本上我看到两种方法:

  1. 使用 invokeLater() 之类的方法推迟处理。我更喜欢没有线程的解决方案。

  2. 根据插入符号的位置确定将字符放入文本中的位置。

还有其他更简单的吗?

Thanks.

Edit:这就是我所拥有的:


您考虑过文档监听器吗?可能由打字事件武装?

class TheListener implements DocumentListener, KeyListener {
  boolean armed;

  void keyPressed(KeyEvent ignore) { }
  void keyReleased(KeyEvent ignore) { }
  void keyTyped(KeyEvent e) {
    armed = true;
    SwingUtilities.invokeLater(new Runnable() { public void run() {
      armed = false;
    }
  }

  void deleteUpdate(DocumentEvent e) {
    changeUpdate(e);
  }
  void insertUpdate(DocumentEvent e) {
    changeUpdate(e);
  }
  void changedUpdate(DocumentEvent e) {
    if (armed) {
      String s = ((JTextComponent)e.getSource()).getText();
      //.... whatever you want to do now
    }
  }
}

//...
TheListener aListener = new TheListener();
textArea.addKeyListener(aListener);
textArea.getDocument().addDocumentListener(aListener);

其理论是在键入的按键上启用文档更改侦听器,然后添加 EDT 事件来解除它。文件更改将在撤防之前首先发生。一旦武装起来,您就可以假设任何文档更改在某种程度上都是由按键输入事件引起的。 (警告,我还没有编译这段代码,YMMV)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing:如何获取包括刚刚键入的字符在内的 TextArea 值? 的相关文章

随机推荐

  • 如何对速记 git status 的输出进行排序?

    我想对输出进行排序git status short branch 以便 索引中的文件显示在底部 在工作树中修改但不在索引中修改的文件出现在其上方 顶部未跟踪的更改 如果这需要管道到其他命令来对输出中的行进行排序 那么保留 Git 配置的输出
  • Hibernate:如果没有活动事务,createQuery 无效

    我的 Spring Hibernate 项目有一些问题 当我尝试获取数据时 我有 HTTP Status 500 请求处理失败 嵌套异常是 org hibernate HibernateException createQuery 在没有活动
  • EmbedScriptFromFile 和 RunScriptFromFile - QTP/UFT

    请帮助我使用EmbedScriptFromFile RunScriptFromFile用于在QTP UFT中执行JS文件 我正在尝试使用 JS 文件获取 N 个值 并在数组中的 QTP UFT 中接收相同的值 为此 我必须了解EmbedSc
  • 解析数学表达式

    给定一个包含数学表达式的字符串 一组函数 命令以及一组分配的变量 NET 是否提供了快速构建解析器的工具 我想构建一个简单的解析器来分析表达式并将其分解为最简单的组件 例如 d abs a b sqrt c becomes f abs a
  • Infinispan JPA 二级缓存默认值

    我正在尝试将 Infinispan 配置为休眠二级缓存 一切都很好 但我想调整默认配置 即所有缓存共享的值 会自动为带有注释的实体创建缓存 Cache 我可以在其中一一定制infinispan xml by
  • 如果我在 ReactJS 或 React Native 类的构造函数中使用 setState() 函数,会发生什么?

    出于好奇 我只是想知道如果我使用会发生什么setState React Native 或 ReactJS 中类的构造函数中的函数 例如 constructor props super props this setState title ne
  • 使用向量中的元素的 R grep 正则表达式(FOLLOW UP)

    跟进这个问题 我还有另一个例子 我无法使用已接受的答案 再说一次 我想找到每一个确切的group中的元素lab向量 labs lt c Beijing T0 BC 89 CN Beijing T24 BC 89 CN Beijing T0
  • 将 jQuery 自动完成应用于克隆元素

    我在用jQuery 自动完成它适用于现有元素 但不适用于动态添加的元素 这是我的自动完成代码 我做了一些更改 function function widget ui combobox create function var self thi
  • 为什么我不能直接引用 document.createElement?

    当创建大量 DOM 元素时 document createElement 和类似的方法可能会添加大量字节并且变得丑陋 我知道我可以制作自己的子例程 或者使用innerHTML 或其他什么 但为什么我不能这样做 var c document
  • Windows 关闭时的 Java 关闭钩子调用

    我遇到一种情况 当用户向操作系统 在我的情况下只有 Windows 发出关闭信号时 我想执行某些任务 我尝试过使用java shutdown hooks 我面临的问题是 当我使用退出程序时System exit 0 关闭挂钩被调用 但当我直
  • 如何从R中的文件读取逻辑数据

    我生成了一个文件 其中每行都包含一个 TRUE 或 FALSE 逻辑值 现在我想将文件中的逻辑数据读入R 但是读入的数据是 字符 模式而不是逻辑值 我想知道如何从文件中读取数据作为逻辑值 我的 R 代码是 cat FALSE n file
  • C++ 顺时针排序 2D 点

    i wrote a program to arrange points on a graph in clockwise manner from 12 o clock such that a vector containing these p
  • 创建一个 titleize 方法,排除“小词”。

    我正在制作一种方法来大写我的输入 除了 a an 和 等任何单词 def titleize string to titleize string to titleize split map words words capitalize joi
  • 为什么允许这些默认参数?

    我发现了this问题 我完全困惑了 答案说b无效 非静态成员不能用作默认参数 这是完全有道理的 我不明白的是为什么另外两个没问题 事实上 如果默认值不是常量表达式 我正在努力理解语义是什么 这里发生了什么 默认参数在编译时明确评估 编译器只
  • 函数体存放在系统目录的什么位置?

    我正在尝试为我的数据库构建一个文档系统 我想包含我的函数和触发器的来源 我设法找到了函数和触发器的所有元数据 但是这些函数和触发器的实际主体存储在哪里 使用功能pg get functiondef 获取完整的函数定义 SELECT pg g
  • 在android上的opengles 2.0中绘制精灵的最快方法

    所以我试图弄清楚如何多次绘制单个纹理四边形 我的问题是 由于它们被创建和删除 并且它们中的每一个都有独特的位置和旋转 我不确定 vbo 是最好的解决方案 因为我听说在 android 上修改缓冲区非常慢 而且似乎我需要每帧创建一个新的缓冲区
  • Unity GVR Cardboard 相机在 Android 上无法正常工作

    我已经准备好了与 Google VR Cardboard 一起使用的统一环境 示例项目运行良好 一切都很好 在我的项目中 我有主相机对象 它在场景中移动 我已将 Strereo Controller 脚本 组件添加到相机中 并且它在 Uni
  • 获取:“找不到 SessionsHelper,期望它在 helpers/sessions_helper.rb 中定义”

    加载 login 后 我在日志文件中收到以下内容 Started GET login for 120 138 93 108 at 2016 01 02 03 06 24 0000 ActionController RoutingError
  • 上传者收到“策略过期”消息发送到 S3 的某些情况

    我最近实施了 Fine Uploader 它基本上是成功的 然而 少数用户无法上传 他们都使用现代浏览器 IE10 FF 和 Chrome 其中一个让我远程访问他们的机器 我可以在 Chrome 和 FF 上尝试它 我在两者上都遇到了相同的
  • Java Swing:如何获取包括刚刚键入的字符在内的 TextArea 值?

    键入按键后获取 TextArea 值 包括该字符 的最佳方法是什么 如果我在事件侦听器中执行此操作 textarea getText 返回不带最终新字符的值 基本上我看到两种方法 使用 invokeLater 之类的方法推迟处理 我更喜欢没