2013-10-03 38 views
2

下面的代碼執行罰款:爲什麼invokeLater方法不能自主使用(使用import javax.swing.SwingUtilities)?

public static void main(String [] args) { 
     Runnable r = new Runnable() { 
      public void run() { 
       createGUI(); 
      } 
     } ; 

     javax.swing.SwingUtilities.invokeLater(r); 
    } 

我很好奇,爲什麼下面的代碼不會編譯:

import javax.swing.SwingUtilities; 

    public static void main(String [] args) { 
       Runnable r = new Runnable() { 
        public void run() { 
         createGUI(); 
        } 
       } ; 

       invokeLater(r); 
     } 

什麼是javax.swing.SwingUtilities.invokeLater(r);import javax.swing.SwingUtilities; invokeLater(r);

+2

嘗試改變'進口javax.swing.SwingUtilities'爲'進口靜態javax.swing.SwingUtilities中的*'和你最後的片段應該工作 – BackSlash

回答

5

之間的differenc引用靜態成員在類內部,作爲一個簡單的名字,你需要一個靜態導入:

import static javax.swing.SwingUtilities.*; 

,以後你可以用

invokeLater(r); 

正常進口import javax.swing.SwingUtilities;,您可以通過一個簡單的名字來引用該SwingUtilities,但不是一流的的任何成員。因此,既然你可以這樣做:

import javax.swing.SwingUtilities; 

SwingUtilities.invokeLater(r); 
+0

。非常感謝你!你能否詳細說一下「這樣的班級」 – Buras

相關問題