khstar
java swing WindowEvenet 본문
자바 스윙에서 윈도우 이벤트 발생시에 WindowLister를 확장해서 사용하게 되면은 바로 해당 메소드를 실행하게 된다
예를 들어 오른쪽 상단에 x버튼을 클릭하여 프로그램을 종료하는 경우 다음과 같이 하면 "프로그램이 종료 됩니다."를 수행한 후 바로 프로그램이 종료됩니다.
public class MainUI implement WindowLister{
@Override
public void windowActivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent arg0) {
// TODO Auto-generated method stub
System.out.println("프로그램이 종료 됩니다.");
}
@Override
public void windowDeactivated(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void windowOpened(WindowEvent arg0) {
// TODO Auto-generated method stub
}
}
그러나 다음과 같이 하면 윈도우 이벤트를 제어 할수 있습니다.
protected void processWindowEvent(WindowEvent e){
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
//질의 종료 버튼이 활성화인 경우 질의 종료후 로그아웃
int exitBoolean = JOptionPane.showConfirmDialog(this, "정말 종료 하시겠습니까?", "종료", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
if(exitBoolean == 0){
//LogOut요청
if(this.stopSQLBtn.isEnabled() == true){
this.logoutStopSQL(this.queryID);
}else{
this.logout();
}
this.dispose();
}
}
}
위의 메소드는 임의로 작성한 것이기에 수행 될지는 확실치 않습니다.. ㅡㅡ;;;
그냥 이렇게 사용 할수 있다 정도 참고 하시기 바랍니다.