使用反射,我设法调用另一个使用swing创建窗口的java应用程序的main方法。我也能抓住那些窗户并操纵它们。当我到达某一点时,我遍历某个JMenuItem的actionListeners,并调用他们的actionPerformed告诉他们按钮已被按下。这完全符合预期,并打开一个新窗口。但是,当这个窗口打开时,我想做一些与它类似的事情,首先得到窗口,然后是里面的组件。
然而,只要事件被触发,就会创建窗口,并且我的程序将处于忙碌循环中,等待我要与之交互的窗口关闭。这是由我调用的应用程序引起的,我无法控制它,也没有机会对此做任何事情。
以下是我如何开展此事件
for (ActionListener a : nc.getActionListeners()) {
a.actionPerformed(new ActionEvent(nc, ActionEvent.ACTION_PERFORMED,null) {});
}
我在思考的是,我可能想要另一个寻找窗口的主题,但我甚至不确定这是否有用......
答案 0 :(得分:2)
Window有静态方法
public static Window[] getWindows() {
return getWindows(AppContext.getAppContext());
}
框架有类似的
public static Frame[] getFrames()
因此,您可以在单击模拟之前获取创建的窗口(框架)的副本,并在单击以查找新创建的窗口后与新列表进行比较。