ネタ心者歓迎! 今更ながらにJava相談室
■ このスレッドは過去ログ倉庫に格納されています
0606488
NGNG訂正。
603と605で書いたのは嘘だった。ごめん。
>Image im;
>をクラスのフィールドとして、クラス定義のはじめに書いて、コンストラクタでは
>im = createImage(300,300);
>とする必要がある。
上記の「コンストラクタでは」というのが嘘。コンストラクタでは、まだCanvasが
表示されていないため、Imageが作れず、createImageがnullを返す。
で、解決法として簡単なのは、BufferedImageを使うこと。
コンストラクタの中で、
im = BufferedImage(300,300,BufferedImage.TYPE_INT_RGB);
page = im.getGraphics();
とする。
BufferedImageは java.awt.imageパッケージにあるから、importを
忘れずに。
createImageでいくなら、コンストラクタではなく、別に例えば
void createBufferImage()というメソッドを用意して、その中で、
im = createImage(300,300);
page = im.getGraphics();
を行う。
で、このcreateBufferImage()を、Mycanvasを含むフレームを表示
した後で呼ぶ。例えば、
MyCanvas mc = new MyCanvas();
frame.add(mc);
frame.setSize(400,400);
frame.show();
mc.createBufferImage();
といった具合。
いずれも、imとpageは、クラスのフィールドとすることは同じ。
以上、お詫びと訂正まで。
■ このスレッドは過去ログ倉庫に格納されています