Vizuální editor během návrhu vizuální třídy generuje a analyzuje kód v jazyce Java. Vizuální editor používá pro vygenerovaný kód Java určitý styl a obsahuje pravidla pro analýzu tohoto kódu.
Vizuální editor pro jazyk Java generuje platný kód jazyka Java, který lze správně zkompilovat a spustit. Kromě toho, když vizuální editor analyzuje stávající kód jazyka Java, používá pravidla k určení prvků kódu, u kterých by se měl provést pokus o zobrazení v pohledu Design.
Pravidla analýzy kódu pro zobrazení v pohledu Design
Vizuální editor pro jazyk Java se pokouší zobrazit kód v pohledu Design, pokud kód splňuje
některé z následujících kritérií:
Před zobrazením komponenty v grafickém pohledu Design vizuální editor kontroluje další požadavky:
- Musí být vytvořeny instance polí v rámci metody get, nebo musí být inicializován objekt
bean pomocí inicializační metody, která je uvedena na kartě stylů vzorků stránky předvoleb vizuálního editoru.
- Nesmí dojít k chybě kompilace.
- Třída musí být platná pro načtení a vytvoření instance.
- Většinu výrazů inicializace polí nelze vyhodnotit.
- Komplexní argumenty metody budou pochopeny správně v případě, že jsou modelovány jednotlivé entity tvořící argument.
Například výraz obsahující zřetězení za použití operandu + bude ve většině případů řádně vyhodnocen.
Většina výrazů je úspěšně analyzována, ale ne všechny výrazy mohou být správně vyhodnoceny. V tomto případě se zobrazí varovné znamení naproti objektu Java bean v daných pohledech a důvod tohoto selhání se zobrazí na stavovém řádku, pokud je objekt bean vybrán na pohledu Design nebo pohledu Java Beans.
Na plátně se zobrazí také varovná ikona:

Kód vygenerovaný vizuálním editorem
- Vizuální editor generuje výchozí konstruktory volající metodu initialize(),
která nastavuje hodnoty vlastností pro danou třídu.
- U apletů se kód pro nastavení počátečních hodnot vlastností nazývá init().
Není volán konstruktorem, protože bude prováděn samotným prohlížečem apletů.
- Volitelné: Máte možnost určit, aby vizuální editor generoval bloky try{}catch() pro komponenty. Tím se bude nepřetržitě zachytávat každá výjimka, ke které dojde během inicializace, a může se zvýšit riziko potlačených výjimek.
Proto je lepší nechat výjimky procházet. Tuto volbu můžete vybrat na kartě Generování kódu v předvolbách vizuálního editoru
().
Následující kód ukazuje JPanel inicializovaný s blokem try{}catch():
private JPanel getJPanel1() {
if (jPanel1 == null) {
try {
jPanel1 = new JPanel();
}
catch (java.lang.Throwable e) {
// TODO: Něco udělat
}
}
return jPanel1;
}
Následující kód ukazuje JPanel bez bloku kódu try{}catch():private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
}
return jPanel;
}
- Volitelné: Máte možnost také určit, aby vizuální editor přidával poznámky označující každý výraz, který vygeneruje. Tato funkce je vhodná pro rozlišení ručně napsaného kódu od kódu vygenerovaného. Následující řádek kódu je příkladem takové poznámky:
this.add(getJPanel(), null); // Vygenerováno
Pro zapnutí této volby použijte zaškrtávací políčko Vygenerovat poznámky pro nové výrazy na kartě Generování kódu v předvolbách vizuálního editoru.
- U Swing/AWT platí, že ačkoli vizuální editor generuje metody, jako např. getPanel(), která vytváří instanci a vrací jeden objekt Java bean, není to vyžadováno. Metoda může vytvářet instance více než jednoho objektu Java bean a návratová hodnota
metody není důležitá pro zjištění, zda je pole objekt Java bean. Pro
zahrnutí polí anOKButton a ivjTableModel jako
objektů Java Bean musí dojít k vytvoření jejich instancí v rámci metody get ve třídě.
- U SWT vizuální editor vygeneruje metody private void createComposite() pro každou třídu
rozšiřující kompozitní prvek a podřízené objekty bean jsou inicializovány v rámci stejné metody.
- Pokud upravená třída rozšiřuje objekt Java bean, upravovaná instance
je reprezentována speciálním objektem Java bean, který se označuje jako část "this". Část "this"
nelze vymazat z pohledu Design, ani z pohledu Java Beans a inicializační metoda pro jeho vlastnosti se vytváří v metodě initialize().
Část "this" se v pohledu Design a pohledu Java Beans zobrazuje pouze, pokud existují vlastnosti dostupné k nastavení v pohledu Vlastnosti.
Metody set pro vlastnosti se generují v metodě initialize(),
nebo v případě, že třída rozšiřuje java.awt.Applet, se použije metoda init().
- Pokud upravovaná třída implementuje org.eclipse.ui.IWorkbenchPart, generovaný kód
pro podřízené obslužné prvky se přidá do metody createPartControl(Composite parent).