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();
	}

}

+ Recent posts