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

是否有针对KeyEvent的postActionEvent版本(特别针对JTextArea)?

华化
2023-03-14

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

如果用户在任一字段中按Enter键,它将验证他们的输入,但是,我希望在他们按submit按钮时重新验证所有字段。每个字段(同样包括JTextAreas)在其ActionListener或KeyListener(对于JTextAreas)中都有自己的验证检查。对JTextFields使用postActionEvent()很容易,但是JTextAreas是否有类似的方法强制触发KeyEvent?我不想通过在ActionEvent中为JButton重写这两个组件的验证来重复代码和消耗内存。

共有1个答案

柳景胜
2023-03-14

您可以使用RobotKeyPress(..)KeyRelease(..)方法模拟Enter被按下。当然,您必须遍历组件上的所有JTextareAs,并调用RequestFocusInWindow(..),然后是模拟的键按(Exception处理省略):

Robot robot = new Robot();//throws AWTException

...

Component[] components=getContentPane().getComponents();  

for(int i=0;i<components.length;i++)  
{
    if(components[i] instanceof JTextArea) { 
         components[i].requestFocusInWindow();
         simulateEnter();
     }
}

public static void simulateEnter() {
     robot.keyPress(KeyEvent.VK_ENTER);
     robot.keyRelease(KeyEvent.VK_ENTER);
}
 类似资料:
  • 问题内容: 我要重新安装并在我的Ubuntu Lucid上。由于这些东西带有相当多的依赖性,所以我想知道是否有一个全面的测试套件来检查新安装是否真的有效。 当然,我只能拿一堆脚本并逐个运行它们,以查看它们是否继续运行,但这无法避免将来在某些情况下我会尝试使用以前没有使用过的脚本的情况。之前不使用它会破裂(或者更糟的是,默默地产生废话)。 问题答案: 是。这两个软件包都有一个方法。 请注意,如果您没

  • 问题内容: 我正在将Primefaces 3.2与JSF 2.0一起使用。 我正在使用 而对于ajaxStatus: 我在同一页面上还有很多其他primefaces组件,但是我只希望在按下此特定按钮时呈现p:ajaxStatus。有什么好的解决办法吗?ajaxStatus在每个ajax事件上呈现。 问题答案: 如果您有少量按钮,则可以对其进行设置,然后在不进行此设置的情况下保留所需的按钮。 这样,

  • 定义一个普通的设置方法,并在每个方法的开头调用; 将方法与依赖于它的所有方法一起移动到一个新类(顶级类或内部类)。 两者都不理想,我希望保持测试的自然分组和清洁,而不是由于缺乏替代方案而分裂。

  • Microsoft Windows Apache的使用 此文阐述如何在Windows平台上安装、配置和运行Apache2.0 参见:在Microsoft Windows上使用Apache 编译Apache 此文会指出在Windows平台上编译Apache以前必须了解的许多要点。 参见:在Microsoft Windows平台上编译Apache 其他平台 Novell NetWare 此文阐述如何在

  • 有没有可能关闭sonar(www.sonarsource.org)对特定代码块的测量,哪一块代码不想被测量? Findbugs输出的“保留堆栈跟踪”警告就是一个例子。离开服务器时,如果客户机不知道异常,我可能只想将消息传递回客户机,而不包括刚刚捕获的实际异常(例如,因为客户机没有包含该异常的JAR)。

  • 当我在android 12中启动我的应用程序时,它崩溃了,并给了我这个错误,我的项目已经有了这个依赖 我更新了 firebase消息库 我在我的项目中使用了待处理的意图,就像这样 错误: