Swing:如何创建事件并将它们分发给组件?

Aym*_*man 7 java events swing

我需要向Swing中的组件发送一些事件,因此它就像任何用户生成的标准Swing事件一样处理.

基本上,类似于宏录制器,然后是JEditorPane的执行器.但我需要更多地控制生成的事件.

所以,假设我有一个编辑器,我想:

  1. 捕获发送给它的所有事件,此时,我可以将它们存储在列表,磁盘或其他任何位置.
  2. 以后能够播放这些活动
  3. 理想情况是,允许用户编辑包含以下内容的命令:
    "键入键A,选择行,删除选择,向上移动,行开始......"

Tom*_*ine 6

显而易见的事情是获取EventQueue并发布事件.这只会将事件添加到队列中,该队列将在EDT上轮流调度.

java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event);
Run Code Online (Sandbox Code Playgroud)

昨天有人声称Opera和Safari做了他们自己的事情,没有给不受信任的代码所需的权限.

直接的方法是打电话Component.dispatchEvent.


kdg*_*ory 3

如果您正在寻找标准 GUI 事件,那么您需要java.awt.Robot

如果您想要定义自己的事件,则必须对需要接收这些事件的 GUI 类进行子类化(或者更好的是,为它们创建一个外部控制器)、定义事件类并分派事件。您可以使用java.beans.EventHandler来调度,创建您自己的处理程序类(我发现有时更有用),或者将您的事件(取决于它们继承的方式)注入到系统事件队列中(找不到类来做到这一点......我以为这是工具包)。

然而,这些我都不会做。您所描述的(宏记录器)应该使用控制器来实现,该控制器生成/提供一系列特定于应用程序的操作消息(查看命令模式)。