如果按钮在另一个类中初始化,则无法将Button添加到JPanel

时间:2014-12-13 13:35:57

标签: java swing

所以我得到了我的Surface类,它从JPanel扩展而来。然后我得到了我的Snake类,它从Surface扩展而来。 所以,我的问题是,如果我在Snake类中初始化Button,我无法在Surface中添加Buttons。为了使它更容易理解:

这适用于我的Surface构造函数:

JButton testButton = new JButton("");
add(testButton);
testButton.setBounds(100,100,10,10);

在我的Snake课程中工作:

JButton testButton = new JButton("");
super.add(testButton);
testButton.setBounds(100,100,10,10);

不确定它是否重要。但这是我的主要功能,我也创建了我的JFrame并初始化了Surface和我的Snake

public static void main(String[] args) 
{
    // Create the JFrame
    JFrame jframe = new JFrame();
    jframe.setSize(800, 400);
    jframe.setResizable(false);
    jframe.setLayout(null);
    jframe.setVisible(true);

    Surface mySurface = new Surface();

    jframe.add(mySurface); // Add the JPanel to the JFrame

    new Snake(true);
}

我的表面:

public Surface()
{
    // Create the JPanel
    setLayout(null);
    setBounds(0, 0, 400, 400);
    setBackground(Color.DARK_GRAY);

    // Add the KeyListener
    addKeyListener(this);
    setFocusTraversalKeysEnabled(true);
    setFocusable(true);
    requestFocusInWindow();
}

那我的错误在哪里?如何从我的Snake类中为我的JPanel添加一个按钮?

谢谢

1 个答案:

答案 0 :(得分:1)

你应该将Snake放入UI。目前,您只创建它的实例,不在任何地方显示。试试这个:

// Create the JFrame
JFrame jframe = new JFrame();
jframe.setSize(800, 400);
jframe.setResizable(false);
jframe.setLayout(null);
jframe.setVisible(true);

Surface mySurface = new Snake(true); //I do not know why you need boolean here, really

jframe.add(mySurface); // Add the JPanel to the JFrame