java - 是否有用于 KeyEvent 的 postActionEvent 版本(专门用于 JTextArea)?

标签 java swing action jtextarea keyevent

我正在编写一个程序,该程序在一个输入面板中包含多个 JTextFields 和 2 个 JTextAreas。我在底部有一个提交按钮。我设置了它,所以当用户在每个字段(包括 JTextAreas)中键入内容并按下 Enter 键时,它会更新一个文本文件,当他们按下提交按钮时,它会更新文件然后输出一个新版本本地目录。

如果用户在任何字段中按下 Enter,它会验证他们的输入,但是,我想在他们按下提交按钮时重新验证所有字段。每个字段(同样,包括 JTextAreas)在其 ActionListener 或 KeyListener(对于 JTextAreas)中都有自己的验证检查。对 JTextFields 使用 postActionEvent() 很容易,但是JTextAreas 是否有类似的方法来强制触发 KeyEvent?我不想通过重写在 JButton 的 ActionEvent 中验证这 2 个组件。

很遗憾,我无法提供示例,因为我是在 secret 机器 (PC) 上编写程序。

最佳答案

当您可以简单地调用您的 validate 方法时,为什么要尝试发布 KeyEvent 来触发验证,例如在伪代码中

myTextArea.getDocument().addDocumentListener(){
  //in each of the method you call validate

}

private function validate( ){
  //do your validation
}

private function submitButtonFunction(){
  validate();
}

另请注意,如果您想对 JTextComponent 中的输入使用react,推荐的方法是使用 DocumentListener。例如,您的 KeyListener 不会在拖放后被触发。根据您的 KeyListener 的实现,当您使用复制粘贴时它也可能会失败。

关于java - 是否有用于 KeyEvent 的 postActionEvent 版本(专门用于 JTextArea)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092008/

相关文章:

java - 如何修复android studio中的以下错误 "Please specify environmental variable OPENCV_ANDROID_SDK to OpenCV Android SDK directory."?

java - Spring 依赖注入(inject) - 使用实例化对象

java - JButton 覆盖整个内容 Pane

vue.js - 使用 Vue 在 v-for 循环中将可迭代元素作为函数参数传递

java - 如何减少以下代码的 "Cyclomatic Complexity"

java - 如何使用 java 套接字连接到在线服务器

Java 应用程序 : repaint isn't executed in While Loop?

java - 主类中的 Swing Timer 不会重新绘制 JFrame 类

yii - 向 Yii Controller 中的 actionIndex 发送参数

Github 操作无需提交,工作树干净