如何从另一个类调用JFrame?

问题描述:

我有一个类创建一个框架。如何从另一个类调用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) –

将您在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