Визуальный редактор генерирует и анализирует код Java по мере создания визуального класса. Код Java генерируется с определенным стилем, а аналитор работает по заданным правилам.
Код, сгенерированный визуальным редактором, синтаксически корректен и может быть скомпилирован и запущен. Кроме того, при анализе существующего кода Java некотрые его элементы могут быть визуализированы в панели Эскиз. Эти элементы определяются специальными правилами анализа.
Правила анализа исходного кода для визуализации в панели Эскиз
Визуальный редактор для Java визуализирует код в панели Эскиз если он соответствует
любому из следующих критериев:
К визуализируемым объектам также предъявляются следующие требования:
- Методы get должны возвращать экземпляры полей класса, либо JavaBean должен инициализироваться методом инициализации, указанном на вкладке Pattern Styles в параметрах визуального реактора.
- В данной строке не должно быть ошибок компиляции.
- Загрузка и создание экзмепляров класса должны проходить без ошибок.
- Большинство выражений инициализации не должны быть доступны для вычисления.
- Сложные аргументы методов должны быть вычисляемы во время моделирования сущностей, составляющих аргумент. Например, выражение объединения строк с помощью операнда + будет вычислено правильно в большинстве случаев.
Большинство выражений анализируются без ошибок, но не все из них могут быть правильно вычислены. В этом случае во всех панелях напротив JavaBean появляется знак предупреждения, кроме того при выделении JavaBean в панелях Эскиз или JavaBean в строке состояния будет показана причина неполадки.
Знак предупреждения также появляется на холсте:

Генерация исходного кода в визуальном редакторе
- Конструкторы по умолчанию, создаваемые в визуальном редакторе, вызывают метод initialize(), задающий значения свойств класса.
- В аплетах начальные значения свойств задаются методом init().
Он вызывается не конструктором, а браузером, выполняющим аплет.
- Необязательно: Визуальный редактор может генерировать для компонентов блоки try{}catch().
Это позволяет перехватывать все исключительные ситуации во время инициализации, а также повышает вероятность их скрытия.
Поэтому желательно не использовать эту возможность. Это можно настроить на вкладке Генерация кода страницы параметров визуального редактора
().
В приведенном ниже коде JPanel инициализируется в блоке try{}catch():
private JPanel getJPanel1() {
if (jPanel1 == null) {
try {
jPanel1 = new JPanel();
}
catch (java.lang.Throwable e) {
// TODO: Something
}
}
return jPanel1;
}
В приведенном ниже коде JPanel инициализируется без блока try{}catch():private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
}
return jPanel;
}
- Необязательно: Визуальный редактор может комментировать части кода, создаваемые ним. Это позволяет легко отличать код, написанный вручную, от сгенерированного программно. Пример строки с таким комментарием:
this.add(getJPanel(), null); // Generated
Эту функцию можно включить отметив Добавлять комментарий к новым выражаниям на вкладке Генерация кода параметров визуального редактора.
- При использовании Swing/AWT визуальный редактор создает методы доступа, такие как getPanel(), возвращающие экземпляр одного JavaBean, но это необязательно. Эти методы могут создавать экземпляры нескольких JavaBean, а возвращаемое значение для определения, является ли поле объектом JavaBean, не используется. Для того чтобы поля anOKButton и ivjTableModel являлись JavaBean, их экземпляры должны создаваться в методе get, входящем в класс.
- При использовании SWT визуальный редактор создает методы private void createComposite() для каждого класса, который расширяет Composite, и все дочерние JavaBean инициализируются в этих методах.
- Если изменяемый класс расширяет JavaBean, то его изменяемый экземпляр представляется в виде специального JavaBean, называемого 'this'.
Объект 'this' нельзя удалить с панелей Эскиз и JavaBean, а инициализация его свойств происходит в методеinitialize().
Объект 'this' присутствует в панелях Эскиз и JavaBean только если есть свойства, которые можно изменить в панели Свойства.
Методы изменения значения свойств генерируются в методе initialize() или, если класс расширяет java.awt.Applet, в методе init().
- Если изменяемый класс реализует интерфейс org.eclipse.ui.IWorkbenchPart,
то код, генерируемый для дочерних управляющих элементов, добавляется в метод createPartControl(Composite parent).