학교/2-2학기(Java)

[12주차] 11/18(월) 강의내용

C0MPAS 2024. 11. 18. 21:19

9.8 배치관리자 없는 컨테이너

- 컨테이너의 배치관리자 제거

- 컴포넌트의 절대 위치와 절대 크기 설정


9.9 여러 컴포넌트를 가진 복잡한 GUI 만들기

- 예제 9-7


10.1 이벤트 기반 프로그래밍

- 자바의 이벤트 기반 GUI 응용프로그램 구조

-> 이벤트 소스

-> 이벤트 객체

-> 이벤트 리스너

-> 이벤트 분배 스레드


10.2 이벤트 객체

- 이벤트 객체 정보

- 이벤트 객체와 이벤트 소스


10.3 이벤트 리스너

- 리스너 인터페이스

- 이벤트 리스너 작성 과정

1) 이벤트와 이벤트 리스너 선택

2) 이벤트 리스너 클래스 작성

3) 이벤트 리스너 등록

 

- 이벤트 리스너 작성 방법

1) 독립 클래스로 이벤트 리스너 작성

2) 내부 클래스로 이벤트 리스너 작성

3) 익명 클래스로 이벤트 리스너 작성

// 예제 10-1: 독립 클래스로 Action 이벤트의 리스너 작성

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class IndepclassListener extends JFrame{
	public IndepclassListener(){
		setTitle("Action 이벤트 리스너 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
		Container c = getContentPane();
		c.setLayout(new FlowLayout());
		JButton btn = new JButton("Action");
		btn.addActionListener(new MyActionListener());
		c.add(btn);

		setSize(350, 150);
		setVisible(true);
	}

	public static void main(String[] args) {
		new IndepclassListener();
	}
}


class MyActionListener implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		JButton b = (JButton)e.getSource();
		if(b.getText().equals("Action")){
			b.setText("액션");
		}
		else{
			b.setText("Action");
		}
	}
}

 

- 마우스로 문자열 이동시키기

// 예제 10-4: 마우스로 문자열 이동시키기 - 마우스 이벤트 연습

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MouseListenerEx extends JFrame{
	private JLabel la = new JLabel("Hello");
	public MouseListenerEx() {
		setTitle("Mouse 이벤트 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
		Container c = getContentPane();
		c.addMouseListener(new MyMouseListener());
		c.setLayout(null);
		la.setSize(50, 20);
		la.setLocation(30, 20);
		c.add(la);

		setSize(250, 250);
		setVisible(true);
	}

	
	class MyMouseListener implements MouseListener{
		public void mousePressed(MouseEvent e) {
			int x = e.getX();
			int y = e.getY();
			la.setLocation(x,y);
		}

		public void mouseReleased(MouseEvent e) {}
		public void mouseClicked(MouseEvent e) {}
		public void mouseEntered(MouseEvent e) {}
		public void mouseExited(MouseEvent e) {}
	}


	public static void main(String[] args) {
		new MouseListenerEx();
	}
}

10.4 어댑터 클래스

- 예제 10-5


출처: 명품 JAVA Programming(개정 5판), 생능출판사