1. GUI를 연동할 수 있다. <이벤트>
javaFX는 자바스크립트 연동을 위해?
BorderLayout : 디폴트 레이아웃. 크기 조절은 안됨
BoxLayout, CardLayout, FlowLayout, GridLayout 등
끝자리가 Listener면 전부 이벤트
끝자리가 Adapter면 이벤트를 다 오버라이드 할 필요 없다.
프레임은 생략하고 이벤트 위주로 설명
============================================================================
1. 인터페이스를 implements 하는 이벤트 적용 방법
package com.GUI_Event;
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
// case 1 : 인터페이스를 implements 하는 이벤트 적용 방법
public class MyFrame extends Frame implements WindowListener {
Panel p1;
Button bt;
public MyFrame() {
super("내꺼");
p1 = new Panel();
bt = new Button("!!!!");
}
public void go() {
// 레이아웃
setFont(new Font("Serif", 3, 30));
p1.add(bt);
add(p1);
// 이벤트 구현
// 1. 대상의 addXXXListener() 를 기능에 따라 찾는다
addWindowListener(this);
// 2. ()의 매개인자를 통해서 해당 이벤트에 맞는 메소드가 있는지 찾는다. => 구현한다.
// 프레임 실행 시점
setSize(400, 400);
setVisible(true);
}
public static void main(String[] args) {
new MyFrame().go();
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing");
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("windowClosed");
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
}
2. WindowListener 인터페이스를 익명으로 implements 하는 이벤트 적용 방법
package com.GUI_Event;
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
// case 2 : WindowListener 인터페이스를 익명으로 implements 하는 이벤트 적용 방법
public class MyFrame02 extends Frame {
Panel p1;
Button bt;
public MyFrame02() {
super("내꺼");
p1 = new Panel();
bt = new Button("!!!!");
}
public void go() {
// 레이아웃
setFont(new Font("Serif", 3, 30));
p1.add(bt);
add(p1);
// 이벤트 구현
// 1. 대상의 addXXXListener() 를 기능에 따라 찾는다
addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
});
// 2. ()의 매개인자를 통해서 해당 이벤트에 맞는 메소드가 있는지 찾는다. => 구현한다.
// 프레임 실행 시점
setSize(400, 400);
setVisible(true);
}
public static void main(String[] args) {
new MyFrame02().go();
}
}
3. 추상클래스 익명으로 정의하는 방법
package com.GUI_Event;
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
// case 3 : 추상클래스 익명으로 정의하는 방법
public class MyFrame03 extends Frame {
Panel p1;
Button bt;
public MyFrame03() {
super("내꺼");
p1 = new Panel();
bt = new Button("!!!!");
}
public void go() {
// 레이아웃
setFont(new Font("Serif", 3, 30));
p1.add(bt);
add(p1);
// 이벤트 구현
// 1. 대상의 addXXXListener() 를 기능에 따라 찾는다
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 2. ()의 매개인자를 통해서 해당 이벤트에 맞는 메소드가 있는지 찾는다. => 구현한다.
// 프레임 실행 시점
setSize(400, 400);
setVisible(true);
}
public static void main(String[] args) {
new MyFrame03().go();
}
}
4. 이너클래스로 처리할 수 있다.
package com.GUI_Event;
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
// case 4 : 이너클래스로 처리할 수 있다.
public class MyFrame04 extends Frame {
Panel p1;
Button bt;
public MyFrame04() {
super("내꺼");
p1 = new Panel();
bt = new Button("!!!!");
}
public void go() {
// 레이아웃
setFont(new Font("Serif", 3, 30));
p1.add(bt);
add(p1);
// 이벤트 구현
// 1. 대상의 addXXXListener() 를 기능에 따라 찾는다
addWindowListener(new MyEvent());
bt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("버튼을 클릭했어!!!!!!!!");
}
});
// 2. ()의 매개인자를 통해서 해당 이벤트에 맞는 메소드가 있는지 찾는다. => 구현한다.
// 프레임 실행 시점
setSize(400, 400);
setVisible(true);
}
class MyEvent extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public static void main(String[] args) {
new MyFrame04().go();
}
}
'데이터과학자 - 강의 > java' 카테고리의 다른 글
210704 Java - Collections (0) | 2021.07.04 |
---|---|
210630 Java - File I/O (0) | 2021.06.30 |
210629 Java - 인터페이스, 추상클래스, 상속, 다형성 (0) | 2021.06.29 |
210626 Java - String, StringBuffer, StringBuilder (0) | 2021.06.28 |
210626 Java - 클래스, 생성자, 상속 (0) | 2021.06.26 |