我在AWT中看到了一个方法:java.awt.Window.getWindows()
。
在JavaFx中,是否有任何方法可以获取所有窗口的JavaFx应用程序?
谢谢,
答案 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
包中存在无法再访问的解决方案。