July 31st, 2007
Swing과 Event의 이야기 - I

swing1.png

JFrame에 JButton이 붙어있다.
Frame위에서 마우스를 깨작 대거나 JButton 위에서 깨작대거나
혹은 버튼을 클릭해도

EventQueue에 추가되는 MouseEvent의 source는 모두 JFrame이다.
더 엄밀히 말하면 경량컴포넌트는 event의 source가 되지 않는다.(JFrame은 경량컴포넌트가 아니다)

사실 EventQueue는 java.awt에 속한 클래스이고
태초에 AWT만 있던 시절도 있었으니 이런 동작이 신기하지 않을 수도 있다.

그런데, MouseEvent에서 source가 JButton인 경우를 본 적이 있는거 같다구?
그 이야기는 다음에 이야기 할까합니다.(갑자기 존대말 T_T)

마가린 바르기 bookmarkr.net metags WZD.com 네이버에 북마크 다음에 북마크 HanRSS에 북마크하기 이올린에 북마크하기 Pumfit에 글 올리기 News2.0에 투고하기 del.icio.us에 북마크하기 댓글 RSS 붐바
July 25th, 2007
AWTEventMulticaster는 더블잭이다

double jack

Component에는 addMouseListener(MouseListener l) 같은 메소드가 있기 때문에
MouseListener의 배열 내지는 List를 필드로 가질것이라 생각하기 쉽습니다.

하지만 Component.java의 소스를 보면 MouseListener는 컬렉션 형태가 아닌 그냥 MouseListener 타입의 필드 하나만 존재합니다.

그 비밀은 AWTEventMulticaster에 있습니다.
이에 대한 설명이 잘 되어 있는 글이 있으니 참고하세요.

마가린 바르기 bookmarkr.net metags WZD.com 네이버에 북마크 다음에 북마크 HanRSS에 북마크하기 이올린에 북마크하기 Pumfit에 글 올리기 News2.0에 투고하기 del.icio.us에 북마크하기 댓글 RSS 붐바