Java - ダブルバッファリングNullPointerException

私は簡単なゲームを書いています。私は最初の3つのクラスを持っています:それに敬意を表するすべてのものを扱うボール、「ボール」の配列から作られた第2のゲーム、そして最後はMAINスレッドを含むウィンドウです。

window.paintはgameシーンのグラフィックスを受け取るためにgame.drawを呼び出します。ゲームオブジェクトはそれを二重にバッファリングしてImageオブジェクトをPlayerのボール位置に移動させることができます(まだ実装されていません)。

私の問題は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
0
このコードは、第2の JFrame が導入されるとすぐに間違っていました。 SSCCE を投稿するとすぐに役立ちます。
追加された 著者 Andrew Thompson,
実際にはクラスにlowerCamelCaseを、変数にUpperCamelCaseを使用していないと教えてください。
追加された 著者 Mike Partridge,
おそらく関連している: stackoverflow.com/questions/1541845 /…
追加された 著者 Mike Partridge,

1 答え

1) please read Java Naming Conventions

2)あなたの絵を JComponent JLabel JPanel に貼り付けて、 JFrame

3) for Painting in Swing use method paintComponent, please not methods paint(Graphics g) or draw(Graphics g)

4)ペイントを遅延またはアニメーション化する場合は、 javax.swing.Timer

3
追加された
@kirillあなたの投稿を編集しました:-)
追加された 著者 mKorbel,
私はそのような命名規則があることを知らなかったので、今私はそれを修正しました。私は塗料ではなくpaintComponentを使用しようとしましたが、実装する方法を理解できませんでした。ボールの配列があり、それらをすべてペイントする必要があります。ボールはゲーム中に作成できます。
追加された 著者 Kirill Kulakov,
私は私のコメントも編集しました。
追加された 著者 Kirill Kulakov,