도라에몽주머니

[Java/Eclipse] Java 42일차 본문

Study/Java

[Java/Eclipse] Java 42일차

에몽쓰 2022. 11. 15. 15:46

Java

 

Frame

: 각종 응용프로그램을 위한 윈도우를 제공하는 클래스

  • Button
    • setBounds(x, y, width, height) : 버튼의 위치 및 크기 지정

Frame 클래스 구조

 

ActionListener

: 버튼을 클릭하거나 메뉴를 누르는 등 이벤트가 발생하였을 때 사용되는 이벤트 리스너(Event Listener)

  • actionPerformed(ActionEvent e)
class ActionDefine implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent e) {
		System.exit(0);  // 프로그램 강제 종료
	}	
}
  • 이벤트 처리 방법

1. Listener를 상속받은 클래스를 만들어서 사용

import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 1) Listener 상속
class ActionDefine implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent e) {
		System.exit(0);  // 프로그램 강제 종료
	}	
}

class Event1 extends Frame {
	Button button = new Button("OK");
	// 2) 이벤트 처리 객체 생성
	ActionDefine ad = new ActionDefine();
	
	public Event1() {
		// Frame 설정
		setTitle("Event1");
		setSize(300, 200);
		
		init();		// 화면 구성
		start();	// 이벤트 설정
		
		setVisible(true);
	}
	// 화면 구성
	void init() {
		setLayout(null);
		button.setBackground(Color.YELLOW);
		button.setBounds(100, 100, 80, 30);
		add(button);
	}
	// 이벤트 설정
	void start() {
		// 3) 버튼에 이벤트 설정
		button.addActionListener(ad);
	}
}

public class Exam1 {
	public static void main(String[] args) {
		Event1 event1 = new Event1();
	}
}

 

2. Listener를 Frame 클래스에서 상속받아 사용

import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 1) Listener 상속 받기
class Event2 extends Frame implements ActionListener {
	// 컴포넌트 선언
	Button button = new Button("OK");
	
	public Event2() {
		// Frame 설정
		setTitle("Event");
		setSize(300, 200);
		
		init();		// 화면 구성
		start();	// 이벤트 설정
		
		setVisible(true);
	}
	
	void init() {
		setLayout(null);
		button.setBackground(Color.YELLOW);
		button.setBounds(100, 100, 80, 30);
		add(button);
	}
	
	void start() {
		// 3) 컴포넌트 객체에 이벤트 설정 : 버튼 이벤트 설정
		// addActionListener(actionPerformed함수가 있는 객체)
		button.addActionListener(this);
	}
	
	// 2) 이벤트 처리 함수 구현
	@Override
	public void actionPerformed(ActionEvent e) {
		System.exit(0);
	}
	
}

public class Exam2 {
	public static void main(String[] args) {
		Event2 event2 = new Event2();
	}
}

 

3. 익명 클래스 사용 1

import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class Event3 extends Frame {
	// 컴포넌트 선언
	Button button = new Button("OK");
	
	public Event3() {
		// Frame 설정
		setTitle("Event");
		setSize(300, 200);
		
		init();
		start();
		
		setVisible(true);
	}
	
	// 화면 구성
	void init() {
		setLayout(null);
		button.setBackground(Color.YELLOW);
		button.setBounds(100, 100, 80, 30);
		add(button);
	}
	
	// 이벤트 설정
	void start() {
		// 1) 익명 클래스로 Listener 상속 및 구현 및 생성
		ActionListener al = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);	
			}
		};
		// 2) 버튼 이벤트 설정
		button.addActionListener(al);
	}
}



public class Exam3 {
	public static void main(String[] args) {
		Event3 event3 = new Event3();
	}
}

 

4. 익명 클래스 사용 2

import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

class Event4 extends Frame {
	// 컴포넌트 선언
	Button button = new Button("OK");
	
	public Event4() {
		// Frame 설정
		setTitle("Event");
		setSize(300, 200);
		
		init();
		start();
		
		setVisible(true);
	}

	// 화면 구성
	private void init() {
		setLayout(null);
		button.setBackground(Color.YELLOW);
		button.setBounds(100, 100, 80, 30);
		add(button);
	}

	// 이벤트 설정
	private void start() {
		// 익명클래스로 이벤트 객체 생성 및 버튼 이벤트 설정
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);	
			}
		});
		
		// "x" 버튼 이벤트 설정
		this.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				super.windowClosing(e);
				System.exit(0);
			}
		});
	}
}



public class Exam4 {
	public static void main(String[] args) {
		Event4 event4 = new Event4();
	}
}

 

addWindowListener

  • WindowListener : 리스너의 모든 인터페이스를 구현해야 함
  • WindowAdapter : 리스너의 모든 인터페이스를 구현할 필요가 없음
// WindowListener ; 모든 method를 구현해야 함
this.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) {
		// TODO Auto-generated method stub
				
	}
			
	@Override
	public void windowClosed(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}
			
	@Override
	public void windowActivated(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}
});
// WindowAdapter ; 반드시 구현해야하는 method 없음
this.addWindowListener(new WindowAdapter() {
	@Override
	public void windowClosing(WindowEvent e) {
		super.windowClosing(e);
		System.exit(0);
	}
});

 

Layout Manager

  • FlowLayout Manager : 컴포넌트를 프레임 상에 원래의 크기대로 차례차례 배치하는 레이아웃

FlowLayout

  • GridLayout Manager : 프레임을 그리드로 나누어 컴포넌트를 차례대로 배치하는 레이아웃

GridLayout

  • BorderLayout : 프레임을 5가지 방향(Center, North, South, West, East) 으로 나누어 컴포넌트를 특정 방향으로 배치하는 레이아웃

BorderLayout

'Study > Java' 카테고리의 다른 글

[Java/Eclipse] Java 44일차  (0) 2022.11.16
[Java/Eclipse] Java 43일차  (0) 2022.11.15
[Java/Eclipse] Java 41일차  (0) 2022.11.11
[Java/Eclipse] Java 39, 40일차  (0) 2022.11.10
[Java/Eclipse] Java 38일차  (0) 2022.11.08