Visual Editor for Java의 디자인 보기 또는 Java Bean 보기에서 컴포넌트에 이벤트를 추가할 수 있습니다.
이벤트를 추가할 때 사용할 수 있는 기존 리스너가 있으면 콜백 메소드가 추가됩니다. 그렇지 않으면 새 리스너가 작성됩니다. 기존 리스너를 사용하려면 이 리스너는 리스너 인터페이스를 구현하는 JavaBean의 익명 내부 클래스여야 합니다. 콜백 메소드에 사용할 빈 메소드 본문이 있거나 어댑터 클래스를 확장해야 합니다. 또한 추가되는 이벤트 콜백에 사용되는 기존 메소드가 없어야 합니다. 특성이 단일 인수 메소드 addPropertyChange(PropertyChangeListener 리스너)를 사용하여 JavaBean에 추가되는 경우 기존 PropertyChangeListener가 다시 사용됩니다. 특성에 아직 코드가 없으면 특성 처리가 추가됩니다.
콜백 메소드를 추가할 수 있는 후보 기존 리스너가 없으면 새 리스너가 작성됩니다. 이 리스너는 익명 내부 클래스이며 어댑터 클래스를 이벤트에 대해 정의하면 리스너가 이 이벤트를 확장합니다. 그렇지 않으면 리스너 인터페이스를 구현합니다. 이벤트를 추가한 후에 //TODO 주석을 사용하여 스텁 메소드를 작성합니다. 스텁 메소드는 이벤트가 발생할 때 실행될 소스 코드의 표시기이므로 이를 변경하여 필수 동작을 수행해야 합니다. //TODO 주석은 타스크 창에 표시되어 불완전 메소드에 플래그를 지정합니다. 이를 통해 나중에 메소드를 찾을 수 있고 콜백 로직이 작성된 후 //TODO 주석을 제거할 수 있습니다.
이전 예제에서는 windowOpened 메소드가 존재했습니다. 이 메소드가 어댑터를 확장하는 리스너이면 아직 windowClosed 메소드를 포함하지 않으므로 동일한 리스너가 다시 사용됩니다. windowClosed(WindowEvent e) 메소드가 추가되고 스텁 메소드와 //TODO 주석이 다음과 같이 추가됩니다.
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent e) {
System.out.println("windowClosed()"); // TODO Auto-generated stub windowClosed()
}
public void windowOpened(java.awt.event.WindowEvent e) {
callExistingWindowOpenedLogic();
}
});
전문 모드에서도 이벤트를 이전에 표시된 대로 JavaBean에 추가할 수 있지만 Java Bean 트리의 리스너에 추가할 수도 있습니다. 이벤트 메뉴에는 리스너의 모든 이벤트 콜백 메소드가 표시되고 이전에 사용된 메소드는 사용 불가능하게 됩니다.
PropertyChangeListener의 경우 팝업 메뉴에는 JavaBean에 바인딩된 모든 특성이 표시됩니다. PropertyChangeListener에 의해 이미 사용되는 특성은 사용 불가능하게 됩니다.
단일 인수 메소드를 사용하여 추가한 리스너에는 다음 코드에 표시된 각 특성 콜백에 대한 로직을 처리하기 전에 특성 이름을 확인하는 if 문이 포함됩니다.
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent e) {
if ((e.getPropertyName().equals("font"))) {
System.out.println("propertyChange(font)");
}
}
});
이렇게 하면 단일 인수 메소드를 사용하여 추가한 PropertyChangeListener를 둘 이상의 특성(여러 if{} 블록 사용)에 대해 사용할 수 있으며 두번째 및 후속 특성 콜백이 추가된 새 if{} 블록에 추가됩니다.
인수가 두 개인 메소드 addPropertyChangeListener(String propertyName, PropertyChangeListener 리스너)를 사용하여 propertyChangeListener를 JavaBean에 추가하면 이 리스너는 특정 특성에 고유하므로 다른 특성에 대해 다시 사용할 수 없습니다. 이 경우 모든 이벤트 계단식 메뉴 하위는 사용 불가능하게 됩니다.