【发布时间】:2012-03-16 12:20:15
【问题描述】:
我正在尝试创建一个简单的游戏,但是在从主类中的多个类中绘图时遇到了麻烦。到目前为止,这是我的代码。
public static void main(String[] args)
{
JFrame mainGameFrame = new JFrame("Space4X");
StarsPanel starsPanel = new StarsPanel();
HomePlanet homePlanet = new HomePlanet();
mainGameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainGameFrame.setResizable(true);
mainGameFrame.getContentPane().add(homePlanet);
mainGameFrame.getContentPane().add(starsPanel);
mainGameFrame.pack();
mainGameFrame.setVisible(true);
}
public void HomePlanet()
{
HomePlanet homePlanet = new HomePlanet();
}
}
这是我的 HomePlanet 课程,
package space4x;
import javax.swing.*;
import java.awt.*;
public class HomePlanet extends JPanel
{
public void HomePlanet()
{
}
public void paintComponent (Graphics page)
{
//Draw planet
super.paintComponent (page);
page.setColor(Color.RED);
page.fillRect(10,10,50,50);
}
}
我还有一个名为 StarsPanel 的类,它可以在随机位置绘制星星并且效果很好,但 HomePlanet 出于某种原因不会。
在mainclass下,如果我有
mainGameFrame.getContentPane().add(starsPanel);
首先,它会绘制 HomePlanet 类下的内容,而不是 StarPanel 类下的内容。
这让我发疯了,为什么我可以让一个工作而不是另一个。
请帮忙。
【问题讨论】:
-
是的,我知道我需要一些类似于 homePlanet.paintComponent(page); 的东西。但它不喜欢页面部分。
-
@khachik:是的,它会编译。只是您将拥有一个具有类名称的方法,而不是具有构造函数。
标签: java swing jpanel layout-manager paintcomponent