2013-03-06 21 views

cevap

6

AFAIK, hala bunu hiç uygun bir yolu yoktur. Bir kirli ve kısa süreli yol olmamasına rağmen

:

source code of javafx.stage.Window tarama, ne bekliyoruz yapmak gibi görünüyor statik yöntem vardır: javafx.stage.Window#impl_getWindows().

Ama feragatnamelerin bir demet vardır:

Bu aslında bir pencere kendisidir tüm Aşamaları alır

FXRobotHelper.getStages() 
or 
StageHelper.getStages() 

javafx8 çalışan java8 kullanım için

/** 
* 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

Bu yöntem, yalnızca geçerli bir işlemde bir Pencere JavaFX'ini listelemektedir. pls benim sonucu için yorum? –

+0

'java.awt.Window.getWindows()' şekilde çalışır. Jre içindeki tüm pencereleri döndürür. – gontard

+0

@gontard no değil. Birkaç javafx pencerem var açık ama awt.Window yöntemi hala boş bir dizi döndürür. – Renato

8

(o Pencere sınıfını genişletir)
+0

Bu, controlfx ile oluşturulmuş üst düzey diyalogları bulamıyor ... – Adam

+0

Bu iki yöntemi kullanarak farkın nerede yattığını bilmek istiyorum. Teşekkürler – Davide

1

Bu, nihayet Java 9'da düzgün şekilde düzeltilmiştir. Bkz. javafx.stage.Window.getWindows()

Şu anda gösterilen JavaFX pencerelerine başvuru içeren bir liste döndürür. Liste değiştirilemez - bu listeyi değiştirmeye çalışmak , çalışma zamanında atılan bir UnsupportedOperationException ile sonuçlanacaktır. StageHelper veya FXRobotHelper içeren diğer çözümleri artık mümkün bu gibi olduğu artık erişilebilir com.sun.javafx paket içinde mevcut olarak

Bu Java 9 esastır.

İlgili konular