두개의 프레임이 있다 메인프레임, 서브 프레임이라고 가정하자
메인프레임에서는 숫자의 카운트를 확인하고, 서브 프레임에서는 숫자를 더하는 버튼과 숫자를 빼는 버튼을 만들거다
그런데 다른프레임에서 호출하고 응답 하기위한 메소드 이걸 콜백메소드라고 한다.
코드로 살펴보자
콜백 메소드를 사용하는 방법!!!!
1. 인터페이스를 만들어서 어떠한 기능을 사용할지 메소드를 만든다
2. 호출자와 응답자를 정한다. 여기 코드에서는 호출자 -> 서브프레임 // 응답자 -> 메인 프레임
먼저 인터페이스를 생성해서 어떤기능의 메소드를 호출할지 만들어준다.
그럼 서브프레임에서 액션리스너를 사용하기위해 1번처럼 인터페이스를 구현을 해준다.
그리고나서 2번코드를 보면 멤버 변수에 방금 만든 인터페이스를 선언해주고나서, 서브프레임에서 기본생성자에 인터페이스를 넣어주고 서브 프레임의 OnCallbackButtonAction이란걸 알수있도록 밑에 this를써주자
4번코드에서는 서브 프레임에 버튼을 누를수있도록 버튼 추가(add)를 해준다.
그다음 5번코드에서 보면 각 버튼이 어떤 기능을 하는지 버튼은 구분을 해주는 코드이다.
버튼을 눌렀을시 프로그램에서는 getSource코드로 인지를 한다. 그럼 눌렀을때의 코드가 button이면
onCallbackButtonAction.clickPlusButton();의 메소드가 호출이되고, 그렇지 않고 다른 버튼(minusButton)을 누르게되면
onCallbackButtonAction.clickMinusButton();메소드가 호출이 된다. 하지만 호출은 서브프레임에서 했지만 응답은 메인프레임에서 하게된다.
메인프레임 즉 응답을 해주어야한다. 여기서 인테페이스 구현을 액션리스너가아닌 위에서 따로만든 OnCallbackButtonAction 인터페이스를 구현을 해주자!!!
메이프레임에서 생성될때 기본 생성자에서 서브프레임이 생성이되는데 이때 this(메인프레임주소) 를 넣어준다.
왜냐고? 서브프레임 기본생성자 매개변수에 OnCallbackButtonAction 인터페이스를 넣어주었다 즉 메인프레임과
OnCallbackButtonAction 의 인터페이스가 연결이 된것이다.
3,4번코드를 보면 OnCallbackButtonAction 인터페이스에서 만든 메소드를 오버라이드를 할수가있다.
여기서 재정의를 각 버튼의 숫자를 증가와 감소를 시키는 코드이다. 그럼 호출은 서브프레임에서 하게되고 응답은 메인 프레임에서 하게 되는 것이다.
'개발일지 > 자바' 카테고리의 다른 글
String과 StringBuilder, StringBuffer의 차이점 (0) | 2022.10.04 |
---|---|
identityHashCode, hasCode의 차이점 (0) | 2022.10.04 |
제네릭이란 (0) | 2022.09.22 |
동기화(synchronized) (0) | 2022.09.20 |
Thread.sleep 활용 (0) | 2022.09.19 |
댓글