2017-08-22 46 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并显示它。