2013-03-06 23 views

Antwort

6

AFAIK, gibt es immer noch keinen richtigen Weg, dies zu tun.

Obwohl es ein schmutzig und kurz Begriff Weg:

die source code of javafx.stage.Window surfen, gibt es eine statische Methode, die, was Sie zu tun scheint erwarten: javafx.stage.Window#impl_getWindows().

Aber es gibt eine Reihe von Haftungsausschlüssen:

/** 
* 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; 
} 
+0

Diese Methode ist nur Liste ein Fenster JavaFX auf aktuellen Prozess. Bitte kommentieren für mein Ergebnis? –

+0

'java.awt.Window.getWindows()' Arbeiten im Weg. Es gibt alle Fenster im jre zurück. – gontard

+0

@gontard nein, tut es nicht. Ich habe ein paar Javafx-Fenster geöffnet, aber die awt.Window-Methode gibt immer noch ein leeres Array zurück. – Renato

8

für javafx8 läuft java8 Verwendung

FXRobotHelper.getStages() 
or 
StageHelper.getStages() 

Dadurch werden alle Stufen abrufen, die im wesentlichen ein Fenster selbst (er erstreckt sich Window-Klasse)

+0

Dies scheint keine Top-Level-Dialoge zu finden, die mit controlsfx erstellt wurden ... – Adam

+0

Ich möchte wissen, wo der Unterschied liegt, indem ich diese beiden Methoden verwende. Vielen Dank – Davide

1

Dies hat schließlich 9. javafx.stage.Window.getWindows()

Siehe richtig in Java behoben

Gibt eine Liste einen Verweis auf die derzeit zeigt JavaFX Fenster enthält. Die Liste ist nicht änderbar - versuchen, diese Liste zu ändern führt in einer UnsupportedOperationException bei Laufzeit geworfen.

Dies ist wichtig, in Java 9 als die anderen Lösungen StageHelper oder FXRobotHelper die nicht mehr möglich, da diese existieren in com.sun.javafx-Paket, das nicht mehr zugegriffen werden kann.

Verwandte Themen