如何获得所有顶级窗口javafx?

时间:2013-03-06 04:39:46

标签: java javafx

我在AWT中看到了一个方法:java.awt.Window.getWindows()。 在JavaFx中,是否有任何方法可以获取所有窗口的JavaFx应用程序?

谢谢,

3 个答案:

答案 0 :(得分:8)

用于运行java8的javafx8 使用

FXRobotHelper.getStages()
 or 
StageHelper.getStages()

这将检索所有Stages本质上是一个Window本身(它扩展了Window类)

答案 1 :(得分:6)

AFAIK,仍然没有正确的方法来做到这一点。

虽然有脏和短期方式:

浏览source code of javafx.stage.Window,有一种静态方法似乎可以满足您的期望:javafx.stage.Window#impl_getWindows()

但是有一堆免责声明:

/**
 * Return all Windows
 *
 * @return Iterator of all Windows
 * @treatAsPrivate implementation detail
 * @deprecated This is an internal API that is not intended for use and will be removed in the next version
 */
@Deprecated
@NoInit
public static Iterator<Window> impl_getWindows() {
    final Iterator iterator = AccessController.doPrivileged(
        new PrivilegedAction<Iterator>() {
            @Override public Iterator run() {
                return windowQueue.iterator();
            }
        }
    );
    return iterator;
}

答案 2 :(得分:4)

最终已在Java 9中正确修复。请参阅javafx.stage.Window.getWindows()

  

返回一个列表,其中包含对当前显示的JavaFX的引用   视窗。该列表是不可修改的 - 尝试修改此列表   将导致抛出UnsupportedOperationException   运行时。

这在Java 9中至关重要,因为其他涉及<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="4dp" android:layout_marginTop="4dp" android:scaleX="-1"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="right|center" android:orientation="horizontal" android:weightSum="1"> <View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0.2" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:gravity="right|center" android:orientation="horizontal"> <TextView android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="bottom|right" android:scaleX="-1" android:text="18:30" android:textSize="14sp" /> <TextView android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/chat_levi" android:padding="10dp" android:scaleX="-1" android:text="Insert text here" android:textColor="@color/blueGray50" android:textSize="16sp" /> </LinearLayout> </LinearLayout> StageHelper的解决方案不再可能,因为FXRobotHelper包中存在无法再访问的解决方案。