我正在尝试创建一个java游戏,其中球从屏幕顶部随机掉落,我们需要使用位于屏幕底部的捕手来捕捉球。
我很难弄清楚如何将它真正地绘制到我的JFrame上。
我有一个关于我的'捕手','球','游戏空间'的课程,我想把它们放在一起。
如何将“捕手”画到我的屏幕上?
目前,我有一个“游戏”类,看起来像这样。
public class Game extends JFrame implements KeyListener {
GameScreen gameScreen;
Catcher playerOneCatcher;
public static void main (String[] args) {
new Game();
}
public Game() {
super("CATCH");
setSize(640,480);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
setResizable(false);
addKeyListener(this);
this.gameScreen = new GameScreen();
this.playerOneCatcher = new Catcher(40, 10);
}
我在Catcher课程中尝试过类似的东西......
public void paintComponent(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(positionX, positionY, this.width, this.height);
}
然而,它没有显示在我的屏幕上。
非常感谢任何帮助。
答案 0 :(得分:3)
您需要在此重新考虑您的策略。 Swing是一个组件框架,大多数组件用于构建用户界面。这些组件未针对游戏中通常需要的内容进行优化。你想要研究双缓冲,精灵等。要想的方法是阅读Graphics2D类(或完全放弃Swing!)
但回答你的问题 - 如果Catcher是Swing组件 - 你需要将它添加到“父”组件,例如像这样:
this.add(playerOneCatcher);
同样适用于gameScreen
,但是从你的代码片段来看,这个组件是什么并不明显。我希望这会有所帮助。
答案 1 :(得分:2)
super.paintComponent (g)
了吗?这可能会导致一些错误。invalidate ()
或repaint ()
重新绘制您正在绘制的内容?我希望你有一个特殊的JComponent,而你没有使用JFrame。那不好。