2017-08-22 92 views
-1

正如你可能知道的那樣,這個程序只是在JFrame中顯示一個帶有「My name is Bob」的GUI。我對編程相對比較陌生,但我仍然無法弄清楚爲什麼runGUI方法中需要「代碼」的代碼。「NameGUI greeting = new NameGUI();」。在我看來,它只是實例化一個從未使用過的對象。但是,當我將該代碼片段取出時,GUI不顯示。我錯過了什麼?java中的GUI:爲什麼我要實例化一個對象來顯示GUI?

public NameGUI() { 
     JFrame frame = new JFrame("Name"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel nameSpace = new JPanel(); 
     JLabel name = new JLabel("My name is Bob"); 
     nameSpace.add(name); 
     frame.setContentPane(nameSpace); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void runGUI() { 
     JFrame.setDefaultLookAndFeelDecorated(true); 
     NameGUI greeting = new NameGUI(); 
    } 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
      runGUI(); 
      }  
     }); 
    } 
} 
+0

我看不到'})的圓括號。 ' –

+0

'爲什麼我要實例化一個對象來顯示GUI?' - 不知道你爲什麼這麼做。沒有必要像這樣構造你的代碼。您可以將所有代碼移動到runGui()方法中。 – camickr

回答

2

在我看來,這簡直就是實例化從未使用過的對象。

你是對的。這行NameGUI greeting = new NameGUI();做的是創建一個永遠不會使用的變量,變量greeting。可能更乾淨將做:

public static void runGUI() { 
    JFrame.setDefaultLookAndFeelDecorated(true); 
    new NameGUI(); 
} 

就是這樣。但要明白,在這兩種情況下都會創建一個NameGUI對象,它使用 - 它的構造函數創建JFrame並顯示它。