Visual Editor는 비주얼 클래스를 디자인할 때 Java 코드를 생성 및 구문 분석합니다. Visual Editor는 생성된 Java 코드에 대해 특정 스타일을 사용하고 Java 코드 구문 분석에 대한 규칙을 가집니다.
Visual Editor for Java는 제대로 컴파일 및 실행될 수 있는 올바른 Java 코드를 생성합니다. 또한 Visual Editor가 기존 Java 코드를 구문 분석할 때 규칙을 사용하여 디자인 보기에서 시각화하려는 코드 요소를 결정합니다.
디자인 보기에서 표시할 코드 구문 분석 규칙
Visual Editor for Java는 코드가 다음과 같은
모든 기준을 만족하는 경우 디자인 보기에서 코드를 시각화하려고 합니다.
그래픽 디자인 보기에서 컴포넌트를 시각화하기 전에 Visual Editor가 확인할 기타 요구사항은 다음과 같습니다.
- 필드는 get 메소드 내에서 인스턴스화되어야 하거나 Bean은 Visual Editor 환경 설정 페이지의 패턴 스타일 탭에 나열된 초기화 메소드에 의해 초기화되어야 합니다.
- 행에 컴파일 오류가 있으면 안 됩니다.
- 클래스는 올바르게 로드 및 인스턴스화되어야 합니다.
- 대부분의 배열 초기화 식은 계산할 수 없습니다.
- 메소드의 복잡한 인수는 인수를 구성하는 엔티티가 모델링되는 한 이해될 수 있습니다. 예를 들어, + 피연산자를 사용한 문자열 연결과 관련된 표현식은 대부분 제대로 계산됩니다.
대부분의 표현식은 성공적으로 구문 분석되지만 일부 표현식은 올바르게 계산되지 않습니다. 이 경우 경고 부호가 보기의 Java Bean에 대해 표시되고 디자인 보기 또는 Java Bean 보기에 해당 Bean이 선택되어 있으면 실패 원인은 상태 행에 표시됩니다.
경고 아이콘도 캔버스에 표시됩니다.

Visual Editor에서 생성된 코드
- Visual Editor는 initialize() 메소드를 호출하는 기본 생성자를 생성하며, 이 메소드는 클래스의 특성 값을 설정합니다.
- 애플릿의 경우 초기 특성 값을 설정하는 코드를 init()라고 합니다.
이 메소드는 생성자에 의해 호출되지 않으므로 애플릿 브라우저 자체에 의해 실행됩니다.
- 선택사항: Visual Editor가 컴포넌트에 대한 try{}catch() 블록을 생성하도록 지정할 수 있습니다. 이렇게 하면 초기화 동안 처리된 모든 예외를 지속적으로 발견하고 표시되지 않은 예외의 위험성이 증가할 수 있습니다.
따라서 대신 예외가 통과하도록 하는 것이 좋습니다. Visual Editor 환경 설정의 코드 생성 탭에서 이 옵션을 선택할 수 있습니다().
다음 코드에서는 try{}catch() 블록을 사용하여 초기화한 JPanel을 표시합니다.
private JPanel getJPanel1() {
if (jPanel1 == null) {
try {
jPanel1 = new JPanel();
}
catch (java.lang.Throwable e) {
// TODO: Something
}
}
return jPanel1;
}
다음 코드에서는 try{}catch() 코드 블록을 사용하지 않은 JPanel을 표시합니다. private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
}
return jPanel;
}
- 선택사항: Visual Editor가 생성할 표현식을 표시한 주석을 추가하도록 지정할 수도 있습니다. 생성된 코드와 수동으로 작성한 코드를 구별하는 데 유용할 수 있습니다. 다음 코드 행은 표시될 주석의 예제입니다.
this.add(getJPanel(), null); // Generated
이 옵션을 켜려면 Visual Editor 환경 설정의 코드 생성 탭에서 새 표현식의 주석 생성 확인란을 선택하십시오.
- Swing/AWT의 경우 Visual Editor는 단일 Java Bean을 인스턴스화하고 리턴하는 getPanel() 같은 메소드를 생성하지만 이것은 요구사항은 아닙니다. 메소드는 둘 이상의 Java Bean을 인스턴스화할 수 있고 메소드의 리턴값은 필드가 Java Bean인지 인식하는 데 중요하지 않습니다. Java Bean으로 포함되는 anOKButton 및 ivjTableModel 필드의 경우 클래스의 get 메소드 내에서 인스턴스화되어야 합니다.
- SWT의 경우 Visual Editor는 모든 클래스 확장 컴포지트에 대해 private void createComposite() 메소드를 생성하고 모든 하위 Bean은 동일한 메소드 내에서 초기화됩니다.
- 편집된 클래스가 Java bean을 확장하면 편집되는 인스턴스는 'this' 파트라고 하는 특수 Java Bean을 사용하여 나타냅니다. 'this' 파트는 디자인 보기 또는 Java Bean 보기에서 삭제할 수 없고 해당 특성의 초기화 메소드는 initialize() 메소드로 수행됩니다.
특성 보기에 설정할 수 있는 특성이 있는 경우 'this' 파트는 디자인 보기 및 Java Bean 보기에만 표시됩니다. 특성에 대한 set 메소드는 initialize() 메소드로 생성되거나 클래스가 java.awt.Applet으로 확장되는 경우에는 init() 메소드가 사용됩니다.
- 편집된 클래스가 org.eclipse.ui.IWorkbenchPart를 구현하면 하위 컨트롤에 대해 생성된 코드는 createPartControl(컴포지트 상위) 메소드에 추가됩니다.