사용자 정의기는 사용자가 Java Bean 특성을 변경하도록 실행할 수 있는 추가 대화 상자입니다. 비주얼 편집기에 추가하는 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) 메소드가 있습니다. 비주얼 편집기는 자체를 사용자 정의기의 리스너로서 추가하므로 사용자 정의기가 디자인 보기의 Java Bean 모양을 새로 고치려면 인수 세트가 있는 firePropertyChange(... 메소드로 해당 리스너를 호출하여 특성 변경에 신호를 보내야 합니다.
사용자가 확인을 클릭하면 비주얼 편집기는 Java 소스 코드를 갱신할 수 있도록 사용자 정의기가 Java Bean에 작성한 변경사항을 판별하려고 합니다. 이를 수행하기 위해 비주얼 편집기는 사용자 정의기가 실행되기 전에 모든 Java Bean의 특성을 복사하여 사용자 정의기가 닫힐 때의 특성과 비교합니다. 모든 특성이 서로 다를 경우(equals 메소드에 false를 리턴함) 이를 변경된 것으로 판별합니다. 특성의 Set 메소드에 대한 인수를 결정하기 위해 java.beans.PropertyDescriptor에 특성 편집기가 작성됩니다. 그런 다음 public void setValue(Object) 및 public String getJavaInitializationString();으로 호출됩니다. 마찬가지로 취소를 클릭하면 사용자 정의기가 이미 Java Bean을 변경했기 때문에 비주얼 편집기는 특성 세트를 조회하고 특성이 서로 다른 세트를 초기 상태로 재설정합니다.
사용자 정의기가 java.awt.Frame 또는 javax.swing.JFrame과 같이 대화 상자를 실행할 필요가 없는 상위 레벨 쉘일 경우, 비주얼 편집기는 현재 상태대로 사용자 정의기를 실행합니다. 이 사용자 정의기 유형이 사용자 고유의 단추 세트를 담당하고 비주얼 편집기에서 사용자 정의기의 취소 또는 확인 여부를 알 수 없기 때문에 사용자 정의기가 닫힐 때마다 변경 여부를 확인할 수 있도록 상위 레벨 특성을 조회합니다. 따라서 사용자 정의기가 취소를 수행할 경우 특성을 조회하여 Java Bean의 특성이 초기 상태로 복원되었는지 확인해야 합니다.
사용자 정의기를 작성한 후에는 이를 Java Bean의 BeanInfo 클래스에 대한 Bean 설명자에 설정해야 합니다.
public class MyClassBeanInfo extends SimpleBeanInfo { public BeanDescriptor getBeanDescriptor() { return new BeanDescriptor(MyClass.class, MyCustomizer.class); } }
상위 주제: 비주얼 편집기 확장