初心者として、フレーム内にグラフィカルな形状を追加したいときはいつでも、次のようにします。
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(0, 0, 10, 10);
g.fillOval(10,10,10,10);
}
フレーム内に無制限の数の図形を自動的に描画するにはどうすればよいですか? 上記の方法に従えば、限られた数の形状 (Rect、Oval など) しかありません。
たとえば、メソッドaddStuff(x, y)
が呼び出されるたびに、座標 x と y に自動的に "Stuff" を描画し、paintComponent
手動で内部を再度編集する必要はありません。
以前は acm パッケージでこれを行っていましたが、簡単でした。以下のコードのように。
for (int i = 0; i < NCIRCLES; i++) {
double r = rgen.nextDouble(MIN_RADIUS, MAX_RADIUS);
double x = rgen.nextDouble(0, getWidth() - 2 * r);
double y = rgen.nextDouble(0, getHeight() - 2 * r);
GOval circle = new GOval(x, y, 2 * r, 2 * r);
circle.setFilled(true);
circle.setColor(rgen.nextColor());
add(circle);
}
上記のように、好きなだけ円を追加できます。これを説明するにはページが必要になることはわかっていますが、acm パッケージに依存せずに上記のコードに似たものを作成する方法について簡単に説明したいと思います。