JavaFX:获得运行应用程序的阶段

时间:2015-08-13 15:19:26

标签: java javafx

为了使用TestFX测试应用程序,我需要获得正在运行的应用程序的实际主要阶段。这意味着我没有代码,我可以通过jar运行应用程序。

这有什么可能的解决方案吗? Scenic View已经这样做,但我无法重现这个功能,特别是因为它似乎使用了弃用的功能

Windows.impl_getWindows

在我的情况下不起作用。

1 个答案:

答案 0 :(得分:1)

试试这个:

import com.sun.javafx.robot.impl.FXRobotHelper;

static Collection<Stage> getAllJavaFXStages() {
    try {
        return FXRobotHelper.getStages();
    } catch ( NullPointerException npe ) {
        // nasty NPE if no stages exist
        return Collections.emptyList();
    }
}

```

基于我自己的测试框架代码:Automaton

修改

如果你想从一个不同的JVM实例获得一个舞台而不是你运行你的代码,那么就没有简单的方法了。

你是对的,ScenicView做到了,但它使用tools.jar来做。这不是您在运行时获得的标准jar,因此您必须手动添加它(将其置于jre/lib/ext应该执行此操作,通常只能在lib中找到它。)

我跟踪了ScenicView似乎在BitBucket repo.

中执行此操作的代码

例如,检查函数getRunningJavaFXApplications

在测试中使用它获得乐趣!