자바(Java)/JAVA 2SE

윈도우 창 생성 방법

본클라쓰 2010. 8. 29. 12:35

 

 자바를 사용하여 윈도우 창을 생성하기 위해서는 Frame 클래스의 인스턴스를 생성해야 한다. 이 때 창을 생성하는 방법에는 두 가지가 있는 다음과 같다.

  1. 직접 Frame 클래스를 생성하는 방법
  2. Frame 클래스를 상속받아 구현하는 방법

 추천하는 방법은 2번 방법으로 Frame 클래스를 상속받아서 구현한 클래스를 생성하는 방법이다. 이 둘의 차이점을 분석하여 어느 것이 더 좋은 방법인지 생각해 본다.

 

 

직접 Frame 클래스를 생성하는 방법

import java.awt.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);
  
    }

}

 

[위 코드의 실행 파일]

directFrame.jar

 

 위 코드가 직접 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();
  
    }
}

 

[위 코드의 실행 파일]

ExtendsFrame.jar

 
 위의 방법에서는 main() 메소드를 클래스 내부에 정의해 자신을 호출하는 방법이지만, 상속을 통한 Frame 구현이 클래스의 역할을 분할하는데 더 적당한 방법이라고 생각된다. 또한, 이벤트를 연결할 때도 이런 방식으로 클래스를 분할하여 작성하는 것이 더 효율적이라 생각된다.

 

 

ExtendsFrame.jar
0.0MB
directFrame.jar
0.0MB