2012-07-20 30 views
2

如何訪問不同JFrame在Java應用程序的不同事件調度線程中執行請通過SSCCE帶來這裏 Will new instance of JVM or reflection help in this case如何訪問所有JFrames在同一應用程序的不同線程

到底,因爲我如果提到下面的代碼添加到所述第一類

Frame[] f2 = JFrame.getFrames(); 

for(Frame fx: f2){ 
    System.out.println(fx.getTitle()); 
    fx.addWindowListener(new WindowAdapter(){ 
    public void windowClosing(WindowEvent we){ 
} 

如果添加到第二類在序列中SSCCE返回兩幀返回僅單個幀,並且如果添加至第三類中返回的所有幀。這是由於事件分派線程的問題,這是什麼原因背後的行爲。如何訪問主框架中的所有框架,即MyApp。

爲什麼JFrame.getFrames();返回awt框架說,例如,如果我想更改我的應用程序中的所有JFrames的默認關閉操作gerFrames返回awt框架,如果JFrame中的caset產生異常。

線程「main」中的異常java.lang.ClassCastException: [Ljava.awt.Frame;不能轉換爲[Ljavax.swing.JFrame;在 myApp.MYApp.main(MYApp.java:48)

+0

'[Ljava.awt.Frame;不能轉換爲[Ljavax.swing.JFrame;在myApp.MYApp.main(MYApp.java:48)'這是因爲你正在嘗試投射_array_。您需要像mKorbel所描述的那樣_individual_單獨投射幀。 – 2012-07-20 06:59:04

+2

難道我只是回答這個@ http://stackoverflow.com/questions/11573259/will-new-instance-of-jvm-or-reflection-help-in-this-case/11573328#comment15312477_11573328 ... – MadProgrammer 2012-07-20 09:32:19

+0

@MadProgrammer對不起,我已經發布了這裏,它並沒有回答,所以我雖然要繼續在那裏最後一部分:( – 2012-07-20 09:41:13

回答

7

代碼線

Window[] allWindows = Window.getWindows(); 
從當前 JVM

  • J/Frame

  • 所有Top-Level Containers

    返回陣列J/Dialog(JOptionPane)

  • J/Window

必須測試如果

if (allWindows[i] instanceof JFrame) { 
相關問題