컴포넌트에 이벤트 추가

Visual Editor for Java의 디자인 보기 또는 Java Bean 보기에서 컴포넌트에 이벤트를 추가할 수 있습니다.

컴포넌트에 이벤트를 추가하려면 다음을 수행하십시오.
  1. Java Bean 보기 또는 디자인 보기에서 컴포넌트를 마우스 오른쪽 단추로 클릭하십시오.
  2. 팝업 메뉴에서 이벤트를 클릭하십시오. 팝업 메뉴에 컴포넌트의 기본 이벤트가 표시됩니다. 다음 단계 중 하나를 수행하십시오.
    • 컴포넌트에 대한 기본 이벤트 중 하나를 클릭하십시오. 이벤트가 컴포넌트에 추가됩니다. 예를 들어, JFrame의 경우 기본 이벤트는 windowClosed 및 windowOpened입니다.
    • 이벤트 추가를 클릭하여 이벤트 추가 창을 여십시오.
  3. 이벤트 추가 창을 연 경우 선택할 범주화된 이벤트 목록이 제공됩니다. 추가할 이벤트를 선택한 다음 완료를 클릭하십시오.
    • 이벤트 추가 대화 상자에는 컴포넌트에 대해 사용 가능한 모든 이벤트가 트리로 표시됩니다. 이 트리는 이벤트 리스너를 첫 번째 수준의 항목으로 표시하고 각 리스너 항목 아래 이벤트가 발생할 수 있는 콜백이 있을 수 있습니다.
      이벤트 추가 대화 상자
    • 대화 상자를 사용하여 새 리스너를 작성할지 아니면 기존 리스너를 사용할지 여부를 지정할 수 있습니다. 대화 상자가 열릴 때 기존 리스너가 분석되고 다시 사용할 수 있는 것으로 생각되는 리스너를 찾으면 해당 리스너를 다른 아이콘으로 표시합니다. 어댑터 클래스를 확장하는 기존 리스너의 경우 이벤트 제공 클래스 아이콘이 사용되고, 그렇지 않으면 이벤트 제공이 사용됩니다. 리스너 자체 내에서 기존 이벤트는 초록색 화살표 초록색 화살표로 표시되고 사용 가능한 이벤트는 불완전 화살표 정상으로 표시됩니다.
    • 기존 리스너를 사용할지 아니면 새 리스너를 작성할지 여부를 지정할 수 있습니다. 새 리스너를 작성할 때 이 리스너를 어댑터 클래스로 확장할지 아니면 리스너 인터페이스만 구현할지 여부를 선택할 수 있습니다. 옵션을 적용할 수 없는 경우 단일 선택 단추가 사용 불가능하게 됩니다. 예를 들어, 기존 리스너가 없거나 기존 리스너를 선택했지만 선택된 이벤트가 이미 사용되고 있는 경우 기존 리스너 사용이 사용 불가능하게 됩니다. 새 리스너에 대해 사용 가능한 어댑터 클래스가 없는 경우 확장: ADAPTER_CLASS_NAME 단일 선택 단추가 사용 불가능하게 됩니다.
    • 이벤트 추가 대화 상자에서 propertyChange를 선택하면 콜백을 추가할 수 있는 옵션이 추가됩니다. addPropertyChange(PropertyChangeListener 리스너) 메소드를 사용하여 JavaBean에 추가할 수 있는 새 리스너를 작성할 수 있습니다. 이 이벤트가 발생하면 리스너의 일반 콜백 메소드 propertyChange(PropertyChangeEvent 이벤트)가 모든 특성 이벤트에 사용됩니다. 일부 JavaBean(예: Swing 컴포넌트)에서 인수가 두 개인 메소드 addPropertyChange(String propertyName, 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{} 블록 사용).

이벤트를 추가할 때 사용할 수 있는 기존 리스너가 있으면 콜백 메소드가 추가됩니다. 그렇지 않으면 새 리스너가 작성됩니다. 기존 리스너를 사용하려면 이 리스너는 리스너 인터페이스를 구현하는 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에 추가하면 이 리스너는 특정 특성에 고유하므로 다른 특성에 대해 다시 사용할 수 없습니다. 이 경우 모든 이벤트 계단식 메뉴 하위는 사용 불가능하게 됩니다.

관련 개념
이벤트, 리스너 및 어댑터 클래스
Java Bean 보기
관련 타스크
컴포넌트의 이벤트 보기
컴포넌트에서 이벤트 삭제
이벤트의 소스 보기

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