2014-04-03 76 views
0

我在Java GUI方面很缺乏經驗,所以我使用NetBeans設計器來滿足我的大多數需求。這是main功能的NetBeans產生:更改NetBeans默認JFrame主要功能有什麼區別嗎?

public static void main(String args[]) { 
     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new MyClass().setVisible(true); 
      } 
     }); 

    } 

我那裏,如果我把它改成這樣任何實質性的區別:

public static void main(String args[]) { 
      /* Create and display the form */ 
      java.awt.EventQueue.invokeLater(new Runnable() { 
       public void run() { 
        MyClass gui = new MyClass(); 
        gui.setVisible(true); 
       } 
      }); 

     } 

,甚至這樣的:

public static void main(String args[]) { 
    MyClass gui = new MyClass(); 
    gui.setVisible(true); 
} 

我問我原因我有一些我創建的成員變量的問題,我需要在主函數中使用它們,它不會讓我和我也不明白java.awt.EventQueue.invokeLater(new Runnable() { public void run() {部分。

+0

我想你需要閱讀[類成員和靜態變量](http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html)。一旦你理解了靜態變量,你就會明白爲什麼你不能在'main'方法中訪問一些變量。 –

+0

@peeskillet我明白爲什麼它不讓我在我的主要方法中使用它們,這就是爲什麼我正確地創建'MyClass'對象並調用我需要的方法的原因。 –

回答

3

前兩個代碼片段嚴格等效。第三個根本不是:您應該與the EDT (Event Dispatch Thread)中的所有Swing圖形元素(除少數例外)進行交互。您的最後一個示例在EDT之外創建並顯示JFrame:可能會出現意外情況。

相關問題