사용자 정의기는 사용자가 실행하여 Java Bean 특성을 변경할 수 있는 추가 대화 상자입니다. Visual Editor에 추가하는 Java Bean 특성을 편집할 수 있는 사용자 정의기 클래스를 작성할 수 있습니다.
사용자 정의기 클래스는 java.beans.Customizer 인터페이스를 구현해야 하며 또한 java.awt.Component의 서브클래스여야 합니다. 일반적으로 사용자 정의기는 java.awt.Panel 또는 javax.swing.JPanel 등의 Java Bean 특성을 보고 조작할 수 있는 제어를 포함한 컨테이너입니다. 사용자 정의기를 도구 모음 단추에서 시작하면 사용자 정의기는 확인 및 취소 단추가 포함된 대화 상자 내부에서 호스트됩니다.
사용자가 사용자 정의기를 열면 사용자 정의기에는 public void setObject(Object bean); 메소드의 파트로 사용자 정의할 Java Bean이 제공됩니다. 그러면 사용자 정의기는 인수를 직접 변경할 수 있습니다.
또한 java.beans.Customizer 인터페이스에는 public void addPropertyChangeListener(PropertyChangeListener listener); 및 public void removePropertyChangeListener(PropertyChangeListener listener) 메소드가 있습니다. Visual Editor는 자신을 사용자 정의기의 리스너로 추가하며 사용자 정의기가 디자인 보기에서 Java Bean의 모양을 새로 고치려는 경우 사용자 정의기는 인수 설정이 있는 firePropertyChange(... 메소드를 통해 리스너를 호출하여 특성 변경을 신호로 보내야 합니다.
사용자가 확인을 클릭하면 Visual Editor는 사용자 정의기가 Java Bean을 변경한 내용을 확인하려고 하므로 Java 소스 코드를 갱신할 수 있습니다. 이 작업을 수행하기 위해 Visual Editor는 사용자 정의기가 시작되기 전에 모든 Java Bean 특성의 사본을 사용하여 사용자 정의기를 닫을 때의 특성과 비교합니다. 다른 특성이 있으면(equals 메소드에 false 리턴) 변경된 것으로 확인됩니다. 특성에 대한 set 메소드에 대해 인수를 확인하기 위해 java.beans.PropertyDescriptor의 특성 편집기가 작성됩니다. 이 특성은 public void setValue(Object) 및 public String getJavaInitializationString();을 사용하여 호출합니다. 마찬가지로 사용자 정의기가 이미 Java Bean을 변경했으므로 취소를 클릭하면 Visual Editor는 초기 상태와 다른 특성 및 재설정 설정을 조회합니다.
사용자 정의기가 내부에서 실행할 대화 상자가 필요 없는 최상위 쉘(java.awt.Frame 또는 javax.swing.JFrame)인 경우 Visual Editor는 사용자 정의기를 있는 그대로 실행합니다. 이 유형의 사용자 정의기는 고유한 단추 설정을 처리하고 Visual Editor는 사용자 정의기가 취소 또는 확인되었는지 인식할 수 없으므로 사용자 정의기가 닫힐 때마다 최상위 특성이 조회되어 변경되었는지 확인합니다. 따라서 사용자 정의기가 취소를 수행할 경우 사용자 정의기를 취소해야 하며, 이를 통해 Java Bean의 특성이 해당 초기 상태로 복원되도록 해야 합니다.
사용자 정의기를 작성한 후 Java Bean의 BeanInfo 클래스에 대한 Bean 설명자에 사용자 정의기를 설정해야 합니다.
public class MyClassBeanInfo extends SimpleBeanInfo {
public BeanDescriptor getBeanDescriptor() {
return new BeanDescriptor(MyClass.class,
MyCustomizer.class);
}
}