2016-10-04 2 views
1

2つの四角形がJFrameに表示されるようにしようとしていますが、メインメソッドのapperasで最後に作成したものと、もう1つは作成しません。約3時間これを把握しようとしていて、私のコンピュータ画面を壊したい。どんな助けも素晴らしいでしょう。ありがとうございました。1つのオブジェクトだけがレンダリングされます

public class Main extends JFrame{ 

static Main main; 
static Enemy square, square2; 
Render render; 

Main(){ 

    render = new Render(); 

    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setSize(500,500); 
    setResizable(false); 
    add(render); 
} 

public void render(Graphics2D g){ 

    square.render(g); 
    square2.render(g); 
} 

public static void main(String [] args){ 

    main = new Main(); 

    square2 = new Square(300,50); 
    square = new Square(50,50); 
} 


} 

.....

public class Render extends JPanel { 

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 

    Main.main.render((Graphics2D)g); 

} 
} 

......

public class Enemy { 

public static int x,y; 

Enemy(int x, int y){ 
    this.x = x; 
    this.y = y; 

} 

public void render(Graphics2D g){ 

} 
} 

.......

public class Square extends Enemy { 

Square(int x, int y){ 
    super(x,y); 
} 

public void render(Graphics2D g){ 

    g.setColor(Color.red); 
    g.fillRect(x, y, 50, 50); 

} 
} 

答えて

2

静的変数に属していますクラスはオブジェクトではありません。 敵の位置に静的変数を使用すると、敵のクラスのインスタンスを作成すると、同じ静的なx、yを共有することになります。あなたは2つの正方形を持っていますが、それらは常に互いの上にあります。

public static int x, y;からpublic int x, y;に変更すると問題が解決するはずです。

+0

ありがとうございます! –

関連する問題