구성요소에 이벤트 추가

디자인 보기 또는 Java Bean 보기에서 구성요소에 이벤트를 추가할 수 있습니다.

구성요소에 이벤트를 추가하려면 다음을 수행하십시오.
  1. Java Bean 보기 또는 디자인 보기에서 구성요소를 마우스 오른쪽 단추로 클릭하십시오.
  2. 팝업 메뉴에서 이벤트를 클릭하십시오. 팝업 메뉴는 구성요소의 기본 설정 이벤트를 표시합니다. 다음 단계 중 하나를 수행하십시오.
    • 구성요소의 기본 설정 이벤트 중 하나를 클릭하십시오. 이벤트가 구성요소에 추가됩니다. 예를 들어 JFrame의 경우 기본 설정 이벤트는 windowClosed 및 windowOpened입니다.
    • 이벤트 추가를 클릭하여 이벤트 추가 창을 여십시오.
  3. 이벤트 추가 창을 열면 선택할 수 있는 카테고리화된 이벤트 목록이 표시됩니다. 추가할 이벤트를 선택하고 완료를 클릭하십시오.
    • 이벤트 추가 대화 상자는 트리의 구성요소에 대해 사용 가능한 이벤트 모두를 표시하고 트리는 첫 번째 항목 레벨로 이벤트 리스너를 표시합니다. 각 리스너 항목 아래에는 이벤트가 발생할 수 있는 사용 가능한 콜백이 있습니다.
      이벤트 추가 대화 상자
    • 대화 상자를 사용하여 새 리스너를 작성할지 또는 기존 리스너를 사용할지 여부를 지정할 수 있습니다. 대화 상자가 열리면 기존 리스너를 분석하고, 재사용할 수 있는 리스너를 발견하면 해당 리스너를 다른 아이콘(기존 리스너가 어댑터 클래스를 확장하는 경우 이벤트 제공 클래스, 그렇지 않은 경우 이벤트 제공)으로 표시합니다. 리스너에서는 기존 이벤트가 초록색 화살표 초록색 화살표로 표시되며 사용 가능한 이벤트는 불완전한 화살표 이벤트 해제로 표시됩니다.
    • 기존 리스너를 사용할 것인지 또는 새 리스너를 작성할 것인지를 지정할 수 있습니다. 새 리스너가 작성되면 이 리스너가 어댑터 클래스를 확장할 것인지 또는 리스너 인터페이스만 구현할 것인지를 선택할 수 있습니다. 옵션이 적용되지 않으면 단일 선택 단추를 사용할 수 없습니다. 예를 들어 기존 리스너가 없거나 기존 리스너가 선택되었지만 선택된 이벤트가 이미 사용 중이면 기존 리스너 사용은 사용 불가능합니다. 새 리스너에 사용 가능한 어댑터 클래스가 없으면 확장: ADAPTER_CLASS_NAME 단일 선택 단추가 사용 불가능합니다.
    • 이벤트 추가 대화 상자에서 propertyChange를 선택할 경우 콜백을 추가하는 추가 옵션이 있습니다. addPropertyChange(PropertyChangeListener listener) 메소드를 사용하여 Java Bean에 추가할 수 있는 새 리스너를 작성할 수 있습니다. 이 경우가 발생하면 리스너의 일반 콜백 메소드 propertyChange(PropertyChangeEvent event)가 모든 특성 이벤트에 사용됩니다. 일부 JavaBeans(예: Swing 구성요소)에서는 두 개의 인수 메소드 addPropertyChange(String propertyName, PropertyChangeListener listener)가 사용 가능하며, 이 메소드를 기본값으로 선택하여 새 리스너에서 사용합니다.

      이벤트 추가 대화 상자

      두 개의 인수 메소드를 사용하여 추가되는 리스너는 특정 특성에 고유하므로 다른 특성에는 재사용할 수 없습니다. 단일 인수 메소드로 추가되는 리스너에는 다음 코드에 표시되는 대로 각 특성 콜백의 논리를 처리하기 전에 특성 이름을 확인하는 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{} 블록을 사용하여).

사용할 수 있는 기존 리스너가 있는 경우 이벤트를 추가하면 콜백 메소드가 추가됩니다. 그렇지 않은 경우 새 리스너가 작성됩니다. 기존 리스너를 사용하려면 리스너는 리스너 인터페이스를 구현하는 JavaBean에서 익명의 내부 클래스이어야 합니다. 이것은 콜백 메소드에 대한 빈 메소드 본문을 가지고 있거나 어댑터 클래스를 펼쳐야 합니다. 추가 중인 이벤트 콜백의 기존 메소드가 없습니다. 특성의 경우 기존 PropertyChangeListener가 단일 인수 메소드 addPropertyChange(PropertyChangeListener listener)로 JavaBean에 추가될 경우 재사용됩니다. 아직 코드가 없는 경우, 특성 처리가 추가됩니다.

콜백 메소드가 추가될 수 있는 기존 리스너 후보가 없는 경우 새 리스너가 작성됩니다. 이 리스너는 익명의 내부 클래스이므로 이벤트에 어댑터 클래스가 정의된 경우 이 리스너가 이 어댑터 클래스를 확장합니다. 그렇지 않으면 리스너 인터페이스를 구현합니다. 이벤트가 추가되면 스텁 메소드가 //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)");         
             }     
          }
    });

따라서 여러 if{} 블록을 사용하여 단일 인수 메소드로 추가된 PropertyChangeListener를 둘 이상의 특성에 사용할 수 있고, 두 번째 및 후속 특성 콜백이 추가될 때 새 if{} 블록이 추가됩니다.

propertyChangeListener가 두 개의 인수 메소드 addPropertyChangeListener(String propertyName, PropertyChangeListener listener)를 사용하여 JavaBean에 추가되면 특정 특성에 고유하므로 다른 특성에 재사용할 수 없습니다. 이 경우 모든 이벤트 계단식 메뉴 하위가 사용 불가능해집니다.

상위 주제: 비주얼 편집기를 사용하여 이벤트 처리

관련 개념
Java Bean 보기

관련 타스크
구성요소에서 이벤트 삭제
구성요소의 이벤트 보기
이벤트의 소스 보기

(C) Copyright IBM Corporation 1999, 2004. All Rights Reserved.