import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class WindowAdapterInnerTest extends JFrame{
JLabel lb = new JLabel("WindowAdapter 테스트중");
public WindowAdapterInnerTest() {
add(lb);
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
AdapterInner ai = new AdapterInner();
addWindowListener(ai);
}
//내부클래스에서 Window 이벤트 처리하기
class AdapterInner extends WindowAdapter{
//다시 오버라이딩
public void WindowClosing(WindowEvent we) {
lb.setText("윈도우 이벤트 처리됨");
System.exit(0);
}
}
public static void main(String[] args) {
new WindowAdapterInnerTest();
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
//Adapter 상속
// JFame, WindowAdapter
public class WindowAdapterTest extends WindowAdapter {
JFrame frm = new JFrame("WindowAdapter 테스트");
public WindowAdapterTest() {
frm.setSize(500,500);
frm.setVisible(true);
frm.setDefaultCloseOperation(frm.DO_NOTHING_ON_CLOSE);
frm.addWindowListener(this);
}
//재 오버라이딩
public void windowClosing(WindowEvent we) {
System.out.println("윈도우 이벤트 발생함.");
frm.dispose();
System.exit(0);
}
public static void main(String[] args) {
new WindowAdapterTest();
}
}
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
//익명의 내부클래스로 이벤트 처리
public class WindowAdapterTest2 extends JFrame{
JTextField tf = new JTextField("익명의 내부 클래스로 이벤트 처리하기");
public WindowAdapterTest2() {
add(BorderLayout.SOUTH, tf);
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
//이벤트 발생대상이 1개일때 사용한다.
addWindowListener(new WindowAdapter() {
//익명의 내부클래스에서 메소드를 다시 오버라이딩한다.
public void windowClosing(WindowEvent we) {
tf.setText("Window 이벤트 처리됨");
System.exit(0);
}
});
}
public static void main(String[] args) {
new WindowAdapterTest2();
}
}
최근댓글