我正在写一个简单的游戏。我有3个类,第一个:球,它负责照顾每一件事,第二个游戏由一系列“球”制成,最后一个是windows,一个包含MAIN线程。 / p>
window.paint调用game.draw以接收游戏场景的图形。虽然游戏本身双重缓冲它,以便Image对象可以移动到玩家的球位置(尚未实现)。 / p>
所以我的问题是因为我正在创建一个Image对象但是为什么这个被初始化为null,因此我得到了NullPointerException。
以下是处理绘画的方法的来源:
public class MyWindow extends JFrame {
//...the other code
public void paint(Graphics g){
thegame.draw();
repaint();
}
}
public class Game extends JFrame implements Runnable {
ball[] cellmap;
//...the other code
public void draw(){
Image GameImage = createImage(800,800);
Graphics GameGraphics = GameImage.getGraphics();
for(int i = 0;i<cellmap.length;i++)
cellmap[i].draw(GameGraphics);
g.drawImage(GameImage, 0, 0, this);
}
}
public class Ball extends JFrame {
//...the other code
public void draw(Graphics g){
g.setColor(Color.red);
g.fillOval((int)(this.x+this.radious),(int)(this.y+this.radious),
(int)this.radious,(int)this.radious);
}
}
答案 0 :(得分:3)
2)不好直接在JFrame
上画画,把你的画作放到JComponent
,JLabel
,JPanel
3)Painting使用方法paintComponent
中的Swing,请不要使用方法paint(Graphics g)
或draw(Graphics g)
4)如果你想延迟或动画你使用javax.swing.Timer