所以我得到了我的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添加一个按钮?
谢谢
答案 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