awt 의 createImage() 를 사용하려면(null pointer exception 관련)

awt 에서 깜빡임을 줄이기 위해 더블 버퍼링을 구현하면 필수적으로 쓰게 되면 메소드가 createImage() 이다.

이 createImage() 메소드는 Component 의 메소드인데, 사용하다 보면 생각지도 않게 리턴값이 null 인 경우가 있다.

이는 createImage() 의 Component 인스턴스가 화면 컨테이너 개체(Frame, Window 등)에 add 되지 않아서 나타나는 현상인데, 급한 맘에 생성자 안에 호출하거나 컨테이너에 add 하기 전에 호출해 버리는 경우가 발생할 수도 있겠다.

필히 메소드 호출 전에 화면에 그려질 컨테이너 개체에 add() 메소드를 통해 등록시켜야 된다.

public class Test extends Canvas {

Frame frame = null;

public Test() {
.
.
frame = new Frame(“Owner”);
.
.
}

public void process1() {
.
.
frame.add(this);
.
.
}

public void process2() {
.
.
Image bufferImage = createImage(width, height);
.
.
}

public void go() {
process1();
process2();
}

}

Leave a Comment