2016-05-29 62 views
1

我有一個類創建一個框架。如何從另一個類調用JFrame?

public class GameDisplay{ 

.... 

public void createDisplay(){ 
    frame=new JFrame(title); 
    canvas=new Canvas(); 
    canvas.setPreferredSize(new Dimension(width,height)); 
    canvas.setFocusable(false); 
    frame.setSize(width,height); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    frame.setResizable(false); 
    frame.add(canvas); 
    frame.pack(); 
} 
public Canvas getCanvas(){ 
    return this.canvas; 
} 

public JFrame getFrame(){ 
    return frame; 
} 

如果我有另一個類將面板和麪板添加到面板,我怎麼能添加它們? 我曾嘗試:

GameDisplay g; 
Container c; 
c = g.getFrame().getContentPane(); 

但它返回空指針錯誤。因此,我似乎無法添加面板。

+1

請參閱[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/q/9554636/418556) –

回答

-1

將您在createDisplay()中創建的JFrame附加到靜態變量。然後從另一個類訪問該靜態變量。

像這樣

public static JFrame frame1; 

然後在createDisplay()

GameDisplay.frame1 = frame; 

在另一個類來獲取內容窗格中只是做

c = GameDisplay.frame1.getContentPane(); 

希望這有助於!

+0

謝謝youuuu!有效!我的意思是,異常錯誤現在消失了! =)但現在,我的問題是我嘗試添加按鈕到容器,但它仍然不顯示在框架中。如何刷新框架以使容器顯示?對不起,我仍在學習GUI的曲線。 – kahjt

+0

勾選答案(綠色勾號)標記爲已解決。如果有幫助,也請留下投票! – RoccoDev

+0

你既沒有聲明也沒有分配一個按鈕變量(從上面的代碼)...你應該創建一個JButton變量並調用frame.add(button) – RoccoDev