프로그램 종료를 위해 간혹 사용되는 방법 중 하나가 윈도우 이벤트를 기반으로 windowClosing 메소드 내에 다음 문장을 삽입하는 것이다. 

 

System.exit(0)
그런데 이 방법은 하나의 창에 있는 X 버튼만 눌러도 프로그램 전체가 종료되고만다. 즉 X 버튼이 눌리지 않는 GUI창도 함께 소멸되는 것이다. 프로그램 종료를 위해, 윈도우 이벤트 처리를 직접 하지 않고 JFrame에 정의되어 있는 다음 메소드를 호출하는 방법도 있다.

public void setDefaultCloseOperation(int operation)

이 메소드는 X 버튼이 눌렸을 떄의 실행 방식을 결정짓는 메소드이다. 이 메소드의 인자로 전달될 수 있는 값의 종류는 총 네가지인데, 이중에서 두가지 정도만 소개한다. 


* WindowConstants.DISPOSE_ON_CLOSE dispose 메소드 호출과 동일한 효과

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

class JFrameWindowClosingEventHandler extends WindowAdapter {
	public void windowClosing(WindowEvent e) {
		JFrame frame = (JFrame)e.getWindow();
		frame.dispose();
		System.out.println("windowClosing()");
	}
}

class JFrameWindow extends JFrame {
	JFrameWindow(String title) {
		super(title);
		this.setSize(300, 200);
		this.setVisible(true);
		this.addWindowListener(new JFrameWindowClosingEventHandler());
	}
}

public class JFrameWindowEventTest {
	public static void main(String[] args) {
		JFrameWindow frameWindow = new JFrameWindow("Window");
	}
}

* JFrame.EXIT_ON_CLOSE System.exit 메소드 호출과 동일한 효과

addWindowListener {
    new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    }
}


블로그 이미지

행복그리고..

,