1
class BiomeViewComponent extends JComponent {
@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    int xpos=300;
    int ypos=300;
    g.setColor(Color.yellow);
    Random r = new Random();
    int spread = r.nextInt(2)+1;
    System.out.println(spread);
    if (spread==1){
        xpos=xpos+50;
        g.setColor(Color.yellow);
        g.fillRect(xpos,ypos,50,50);
    }
    else{
        ypos=ypos-50;
        g.setColor(Color.yellow);
        g.fillRect(xpos,ypos,50,50);
    }
}

}

上記のコードのようにpaintComponentスクリプトの受け入れられた答えを使用しましたが、それは機能しましたが、問題は、どうすれば複数回ペイントさせることができるかということです。

4

1 に答える 1

2

次のように、オーバーライドされた paintComponent 関数内にペイント コードを記述する必要があります。

class BiomeViewComponent extends JComponent {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        // your painting code goes here
    }
}

そして、これを次のように JFrame に追加します。

JFrame j = new JFrame();
BiomeViewComponent bv=new BiomeViewComponent();

Container c=j.getContentPane();
c.setLayout(new BorderLayout()); // whatever layout you want here.....
c.add(bv);

BiomeViewComponent は、必要に応じて Swing によって再描画されます (つまり、paintComponent(..)関数が呼び出されます)。

描画コードを JFrame 以外のコンポーネント内に配置することをお勧めします。これにより、GUI を構築するときに、必要に応じて表示コンポーネントを JFrame 内で柔軟に再配置できます。

于 2012-05-25T02:10:25.110 に答える