如何以编程方式分派事件以被Java中的另一个对象捕获?

如何以编程方式分派事件以被Java中的另一个对象捕获?,java,swing,events,Java,Swing,Events,说到事件,我肯定有ActionScript的背景。我目前正在使用Swing进行一个项目,在该项目中,我需要从一个对象发送一个事件,并在父对象中捕获该事件,但我不知道如何做到这一点 在ActionScript3中,您可以通过dispatchEvent调用分派事件。例如,假设我想以编程方式分派一个mouseClick事件(即使没有单击鼠标),以便其他侦听器激活。我可以通过使用 dispatchEvent(MouseEvent.Click); 一旦被调用,事件将在其父对象中冒泡,直到到达顶部,事件侦

说到事件,我肯定有ActionScript的背景。我目前正在使用Swing进行一个项目,在该项目中,我需要从一个对象发送一个事件,并在父对象中捕获该事件,但我不知道如何做到这一点

在ActionScript3中,您可以通过dispatchEvent调用分派事件。例如,假设我想以编程方式分派一个mouseClick事件(即使没有单击鼠标),以便其他侦听器激活。我可以通过使用

dispatchEvent(MouseEvent.Click);
一旦被调用,事件将在其父对象中冒泡,直到到达顶部,事件侦听器可以在途中捕获它。(从技术上讲,它会向下和向上冒泡,但我认为这超出了问题的范围)。因此,如果我想在父对象中侦听mouseClick事件,我只需添加一个侦听器,如下所示:

parent.addEventListener(MouseEvent.Click, Function);
这将捕获鼠标点击并执行该功能

这就是ActionScript3的工作原理。我正在尝试用Java做类似的事情,Java事件的工作原理似乎有了一些重大的理论变化。在java中如何做同样的事情?具体来说,如何以编程方式分派事件并在父对象中捕获该事件

我已经对这个问题做了自己的研究,这只会使我更加困惑。我看过:


要以编程方式触发事件,请查看您是否在按钮之外,或者最好是在子类中的
AbstractButton.fireActionPerformed()

开发组件时,缺少冒泡意味着每个父组件都需要处理和重新修补子组件事件:

innerButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent buttonEvent) {
        MyEvent myEvent = ... // process buttonEvent
        fireMyEventHappened(myEvent);
    }
});

Component
类有一个
dispatchEvent(…)
方法,因此您可以直接创建事件并将其分派给任何组件


或者,如果您想手动生成操作系统事件,那么您可以使用
Robot
类,Java将为您调度事件。在这种情况下

非常好。我如何在一个祖先身上捕捉到它?到目前为止,我在Java中对事件所做的只是调用object.addActionListener(new ActionListener())。如何让对象侦听在另一个对象中执行的操作?查看API,dispatchEvent似乎会直接分派到组件或其子组件。然而,它并没有提到要向上移动组件列表。我该怎么做?