윈도우 창 생성 방법
자바를 사용하여 윈도우 창을 생성하기 위해서는 Frame 클래스의 인스턴스를 생성해야 한다. 이 때 창을 생성하는 방법에는 두 가지가 있는 다음과 같다.
- 직접 Frame 클래스를 생성하는 방법
- Frame 클래스를 상속받아 구현하는 방법
추천하는 방법은 2번 방법으로 Frame 클래스를 상속받아서 구현한 클래스를 생성하는 방법이다. 이 둘의 차이점을 분석하여 어느 것이 더 좋은 방법인지 생각해 본다.
직접 Frame 클래스를 생성하는 방법
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class DirectFrame {
public static void main(String[] args) {
Frame frame = new Frame("Test");
// 창 종료를 위한 부분
frame.addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent e ){
System.exit(0);
}
});
frame.setBounds(100, 100, 300, 200);
frame.setVisible(true);
}
}
[위 코드의 실행 파일]
위 코드가 직접 Frame 객체를 생성하는 방법이다. 이 방법으로 Frame 객체를 생성했을 때 생성된 Frame 창을 종료하기 위한 이벤트 정의를 내부에서 다시 정의했다. 이 방법은 프레임에 대한 세세한 정의가 어렵고, 이벤트를 추가하기 어려운 단점이 있다.
Frame 클래스를 상속받아 새롭게 정의한 클래스를 생성하는 방법
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class ExtendsFrame extends Frame {
private static final long serialVersionUID = 1L;
public ExtendsFrame() {
super("Test");
setBounds(100, 100, 300, 200);
setVisible(true);
// 창 종료를 위한 부분
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args) {
ExtendsFrame frame = new ExtendsFrame();
}
}
[위 코드의 실행 파일]
위의 방법에서는 main() 메소드를 클래스 내부에 정의해 자신을 호출하는 방법이지만, 상속을 통한 Frame 구현이 클래스의 역할을 분할하는데 더 적당한 방법이라고 생각된다. 또한, 이벤트를 연결할 때도 이런 방식으로 클래스를 분할하여 작성하는 것이 더 효율적이라 생각된다.