在模拟挥杆动作后关注新窗口

时间:2014-05-05 07:04:44

标签: java swing reflection

使用反射,我设法调用另一个使用swing创建窗口的java应用程序的main方法。我也能抓住那些窗户并操纵它们。当我到达某一点时,我遍历某个JMenuItem的actionListeners,并调用他们的actionPerformed告诉他们按钮已被按下。这完全符合预期,并打开一个新窗口。但是,当这个窗口打开时,我想做一些与它类似的事情,首先得到窗口,然后是里面的组件。

然而,只要事件被触发,就会创建窗口,并且我的程序将处于忙碌循环中,等待我要与之交互的窗口关闭。这是由我调用的应用程序引起的,我无法控制它,也没有机会对此做任何事情。
以下是我如何开展此事件

for (ActionListener a : nc.getActionListeners()) { a.actionPerformed(new ActionEvent(nc, ActionEvent.ACTION_PERFORMED,null) {}); }

我在思考的是,我可能想要另一个寻找窗口的主题,但我甚至不确定这是否有用......

1 个答案:

答案 0 :(得分:2)

Window有静态方法

public static Window[] getWindows() {
    return getWindows(AppContext.getAppContext());
}

框架有类似的

public static Frame[] getFrames()

因此,您可以在单击模拟之前获取创建的窗口(框架)的副本,并在单击以查找新创建的窗口后与新列表进行比较。