Widziałem metodę w AWT: java.awt.Window.getWindows()
. W JavaFx, czy istnieje metoda uzyskania wszystkich aplikacji JavaFx okna?Jak zdobyć wszystkie poziomy javafx na najwyższym poziomie?
Dzięki,
Widziałem metodę w AWT: java.awt.Window.getWindows()
. W JavaFx, czy istnieje metoda uzyskania wszystkich aplikacji JavaFx okna?Jak zdobyć wszystkie poziomy javafx na najwyższym poziomie?
Dzięki,
AFAIK, nadal nie ma odpowiedniego sposobu na zrobienie tego.
Chociaż istnieje brudne i krótkotrwała sposób:
Przeglądając source code of javafx.stage.Window
, jest statyczna metoda, która wydaje się robić to, czego oczekują: javafx.stage.Window#impl_getWindows()
.
Ale tam jest kilka stopek:
/**
* 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;
}
dla javafx8 systemem java8 użytku
FXRobotHelper.getStages()
or
StageHelper.getStages()
To będzie pobierać wszystkie etapy, które jest w zasadzie sama oknem (rozciąga klasa Okno)
Zostało to naprawione poprawnie w Javie 9. Zobacz javafx.stage.Window.getWindows()
Powoduje zwrócenie listy zawierającej odniesienie do aktualnie wyświetlanych okien JavaFX . Lista nie może być modyfikowana - próba modyfikacji tej listy spowoduje zgłoszenie wyjątku UnsupportedOperationException w środowisku wykonawczym .
Jest to niezbędne, Java 9, inne rozwiązania polegające StageHelper
lub FXRobotHelper
nie jest już możliwe, ponieważ one istnieją w com.sun.javafx
opakowania, które nie mogą być dostęp.
Ta metoda jest tylko listą jednego okna JavaFX dla bieżącego procesu. pls skomentować mój wynik? –
'java.awt.Window.getWindows()' działa na drodze. Zwraca wszystkie okna w jre. – gontard
@gontard nie, nie. Mam kilka okien javafx otwartych, ale metoda awt.Window nadal zwraca pustą tablicę. – Renato