【问题标题】:Find components of external java applications and use them查找外部 Java 应用程序的组件并使用它们
【发布时间】:2013-01-14 11:08:12
【问题描述】:

我的问题看起来像: 我有一个用 java 编写的外部应用程序,我启动它。 接下来是启动我的应用程序。它应该找到外部应用程序的 JTextFields 并为它们设置适当的文本值。最后,触发放置在此窗口某处的 JButton。

我已经尝试过Java search for on-screen text field的解决方案,但不知怎么找不到具体的子窗口

此解决方案生成的输出为:

...
Window found: EnumWindows - NetBeans IDE 7.3 Beta 2
Window found: ToolkitEventListener2
Window found: theAwtToolkitWindow
Window found: 
... 

JFrame 的标题是 ToolkitEventListener2,它创建了 JMenu 和 JButton。

我希望我能很好地解释这个问题,并且你能帮助我。

【问题讨论】:

    标签: java swing automation external jtextfield


    【解决方案1】:

    java.awt.Window 类有一个静态方法

    public static Window[] getWindows()
    

    使用它来获取所有现有窗口的列表。通过标题或焦点找到正确的JFrame(或JDialog)并获取所有子组件(递归)。过滤掉所有JTextFields 并使用它们的值。

    【讨论】:

    • hmm ...这将获取调用它的应用程序的所有(拥有或不拥有)窗口,而不是来自外部应用程序。
    • @kleopatra 但是由于“我启动的用java编写的外部应用程序”,可能会被移动到“我的应用程序”并启动,而不是使用ProcessBuilder,因为这也会创建一个单独的JVM,但只需构造另一个应用程序的实例。或致电main(String)?这样一来,Window 实例可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多