2013-10-30 44 views
0

我對Swing很新,所以我一直在使用windowbuilder來嘗試組裝一個基本的GUI。設計屏幕工作正常,但是當我回到代碼時,它以我不熟悉的方式編寫,我正在努力實際運行它。在eclipse中的窗口生成器,不確定如何顯示窗口

它生成的代碼是:

public class GUIControls extends JFrame{ 

public GUIControls() { 
    getContentPane().setLayout(new CardLayout(0, 0)); 

    JPanel panel = new JPanel(); 
    getContentPane().add(panel, "name_36737116256884"); 
    panel.setLayout(null); 

    JButton InsertionSortButton = new JButton("Insertion Sort"); 
    InsertionSortButton.setBounds(32, 16, 101, 56); 
    panel.add(InsertionSortButton); 

    JPanel panel_1 = new JPanel(); 
    getContentPane().add(panel_1, "name_36737137352442"); 
    InsertionSortButton.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent arg0) { 
      CardLayout cardLayout = (CardLayout) getContentPane().getLayout(); 
      cardLayout.show(getContentPane(), "name_36737137352442"); 
     } 
    }); 
} 

(帶按鈕時,被的mouseClicked寫我所採取的行動,我沒有測試它,因爲我不能運行的東西)

通常我會怎麼做:

public void runGUI(){ 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createGUI(); 

     } 
    }); 
} 

隨着createGUI是我用來創建沒有的WindowBuilder一個(完全可怕的)GUI的方法,但因爲它不工作,我不能在此使用GUIControls與可運行(事實上,我什至不知道什麼時候什麼東西不返回值,它仍然是一種方法?)。

有誰知道我如何去運行它?

感謝

+0

'GUIControls'從什麼擴展? – MadProgrammer

+0

啊,我的壞,它在類GUIControls這是:公共類GUIControls擴展JFrame,我會添加到主帖。 – djcmm476

回答

2

您需要實例化一個實例的GUIControls並使其可見,例如...

public void runGUI(){ 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      GUIControls guiControls = new GUIControls(); 
      guiControls.pack(); 
      guiControls.setLocationRelativeTo(null); 
      guiControls.setVisible(true); 
     } 
    }); 
} 

的PS我知道窗口生成器喜歡利用null佈局,但我將盡可能地避免它們 - 恕我直言

+0

工作正常!非常感謝。但是,快速跟進問題,「公共GUIControls」到底是什麼?它是實例化的,這是否意味着它是一個類?如果是這樣,它是如何擺脫不宣稱自己是這樣的? (另外4分鐘我也不能接受你的答案,所以呃...期待!) – djcmm476

+1

'public GUIControls'是一種被稱爲構造函數的特殊方法。它用於初始化對象的新實例。所以,當你調用'new GUIControls()'時,Java會爲'Object'分配內存,初始化任何實例字段並調用構造函數(由'new'命令指定) – MadProgrammer

+0

啊,這很酷。再次感謝! – djcmm476