자바를 사용하여 윈도우 창을 생성하기 위해서는 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 구현이 클래스의 역할을 분할하는데 더 적당한 방법이라고 생각된다. 또한, 이벤트를 연결할 때도 이런 방식으로 클래스를 분할하여 작성하는 것이 더 효율적이라 생각된다.
'자바(Java) > JAVA 2SE' 카테고리의 다른 글
이벤트 처리 방법 (0) | 2010.08.29 |
---|---|
시스템 플랫폼이 지원하는 폰트 리스트 알아보기 (0) | 2010.08.29 |
컨테이너(Container) (0) | 2010.08.29 |
자바 GUI(Graphic User Interface) 프로그래밍 (0) | 2010.08.29 |
그리드백(GridBag) 레이아웃 (0) | 2010.07.11 |