Java/Excercise

callback 02 Activity 메서드를 이용한 콜백

낭구리 2021. 9. 9. 19:33
package ch02;

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Activity1 extends JFrame {
//implements 안쓰고 메서드를 사용해서
	String name;
	JPanel panel;
	CallbackCheckPosition callbackCheckPosition = new CallbackCheckPosition() {
		//내부 익명 클래스에 이름(callbackCheckPosition)을 지어주고 알에 주소값이 담김 
		//변수 선언과 동시에 초기화
		
		@Override
		public void checkPosition(int x, int y) {
			System.out.println("x :" + x);
			System.out.println("y :" + y);
		}
	}; 
	public Activity1(String name) {
		this.name = name;
		initData();
		setInitLayout();
	}
	
	private void initData() {
		setTitle(name);
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		panel = new JPanel();
		
	}
	
	private void setInitLayout() {
		setVisible(true);
		add(panel);
		panel.setBackground(Color.blue);
	}
}

 

package ch02;

import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

//호출자 (콜리)
public class Activity2 extends JFrame {

	String name;
	JPanel panel;
	CallbackCheckPosition callbackCheckPosition;
	// 어디에 보내기 위해서 주소값이 필요한데 이때 인터페이스 활용
	// 3시39

	public void setCallbackCheckPosition(CallbackCheckPosition callbackCheckPosition) {
		this.callbackCheckPosition = callbackCheckPosition;
	}

	public Activity2(String name) {
		this.name = name;
		initData();
		setInitLayout();
		addEventListener();
	}

	private void initData() {
		setTitle(name); // 변수화 시켜줄것
		setSize(500, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		panel = new JPanel();

	}

	private void setInitLayout() {
		setVisible(true);
		add(panel);
		panel.setBackground(Color.yellow);
	}

	private void addEventListener() {
		// 메서드가 사용한적이없다. 생성자안에 추가하기
		this.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				int x = e.getX();
				int y = e.getY();
				callbackCheckPosition.checkPosition(x, y);

			}
		});
	}
}

 

package ch02;

public interface CallbackCheckPosition {

	public abstract void checkPosition (int x, int y);
	
}

 

package ch02;

public class MainTest {

	public static void main(String[] args) {

		Activity1 activity1 = new Activity1("액티비티1");
		//맴버변수를 전달하기 1에서 2로
		Activity2 activity2 = new Activity2("액티비티2");
		//임플리먼트는 주소값만 전달하는 것이지만 
		
		//메서드를 사용해서 콜백연결하기
		activity2.setCallbackCheckPosition(activity1.callbackCheckPosition); 
		//클릭은 액티2 에서했지만 좌표값은 액티1의 것을 사용
	}

}

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

callback ch04 CalendarMainTest  (0) 2021.09.09
callback ch03 Activity 상속받아 콜백  (0) 2021.09.09
callback ch01 CallbackBtnAction  (0) 2021.09.09
callback ch00 Main,SubActivity  (0) 2021.09.09
swing ch06 MiniAmongUs  (0) 2021.09.08