Esistono stili o modi diversi di scrivere codice Java. L'editor visuale utilizza uno stile particolare per il proprio codice Java generato.
L'editor visuale per Java consente di generare codice Java valido che può essere opportunamente compilato ed eseguito. Inoltre, quando l'editor visuale analizza il codice Java esistente, utilizza regole per stabilire quali elementi del codice dovrà provare a visualizzare nella vista Progettazione.
Regole per il codice analizzabile
L'editor visuale per Java prova a visualizzare codice nella vista Progettazione se quest'ultimo soddisfa uno dei seguenti criteri:
Esistono inoltre altri requisiti che l'editor visuale verifica prima della visualizzazione di un componente nella vista di progettazione grafica:
- I campi devono essere istanziati all'interno di un metodo get oppure il bean deve essere istanziato da un metodo di inizializzazione elencato nella scheda Stili modello della pagina delle preferenze dell'editor visuale. Di seguito è possibile notare che i metodi
jbInit, initComponents e initialize sono specificati come metodi di inizializzazione:
- Non bisogna riscontrare un errore di compilazione nella riga.
- Una classe deve essere valida per il caricamento e l'istanziazione
- Molte espressioni di inizializzazione di matrici non possono essere valutate
- Le espressioni che implicano il concatenamento aritmetico o di stringhe mediante l'operando + non verrà valutate
L'esito dell'analisi di molte espressioni è positivo, ma non tutte le espressioni possono essere valutate correttamente. In questo caso, nelle viste verrà segnalato un avviso per il bean Java e il motivo dell'errore verrà indicato nella riga di stato quando il bean viene selezionato nella vista Progettazione o Bean Java.
Nella struttura verrà visualizzata anche un'icona di avviso.
Codice generato dall'editor visuale
- L'editor visuale genera costruttori predefiniti che consentono di chiamare il metodo initialize(), con il quale vengono impostati i valori delle proprietà della classe.
- Nel caso delle applet, il codice per impostare i valori iniziali delle proprietà è init().
Questo codice non viene chiamato dal costruttore, in quanto verrà eseguito dal browser delle applet.
- Facoltativo: è possibile stabilire che l'editor visuale generi blocchi try{}catch() per i componenti. In questo modo, però, verrà rilevata in modo continuo ogni eccezione generata durante l'inizializzazione, aumentando il rischio di soppressione delle eccezioni.
Di conseguenza, è preferibile consentire il normale corso delle eccezioni. E' possibile selezionare questa opzione nella scheda Generazione codice della pagina delle preferenze dell'editor visuale
().
Il codice riportato di seguito mostra una classe JPanel inizializzata con il blocco try{}catch():
private JPanel getJPanel1() {
if (jPanel1 == null) {
try {
jPanel1 = new JPanel();
}
catch (java.lang.Throwable e) {
// TODO: Something
}
}
return jPanel1;
}
Il codice riportato di seguito mostra una classe JPanel senza il blocco di codice try{}catch():private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
}
return jPanel;
}
- Facoltativo: è possibile anche stabilire che l'editor visuale aggiunga un commento per contrassegnare ogni espressione da esso generata. Questa indicazione può rivelarsi utile per distinguere il codice scritto manualmente dal codice generato. La riga di codice riportata di seguito rappresenta un esempio di commento:
this.add(getJPanel(), null); // Generated
Per attivare questa opzione, selezionare la casella di controllo Genera un commento per le nuove espressioni nella scheda Generazione codice della pagina delle preferenze dell'editor visuale.
- Nel caso di Swing/AWT, non si tratta di un requisito, anche se l'editor visuale genera metodi quali getPanel() che consentono di istanziare e restituire un singolo bean Java. Un metodo è in grado di istanziare più di un bean Java e il valore restituito del metodo non è importante per il riconoscimento del campo come bean Java. Per poter includere i campi anOKButton e ivjTableModel come bean Java, è necessario che vengano istanziati all'interno di un metodo get nella classe.
- Nel caso di SWT, l'editor visuale genera metodi private void createFoo() per ogni classe che estende Composite e tutti i bean secondari sono istanziati all'interno dello stesso metodo.
- Se la classe modificata estende un bean Java, l'istanza da modificare sarà rappresentata con un bean Java speciale denominato parte 'this'. La parte 'this' non può essere eliminata dalla vista Progettazione o dalla vista Bean java e il metodo di inizializzazione delle relative proprietà viene realizzato nel metodo initialize().
Una parte 'this' viene visualizzata nella vista Progettazione e Bean Java soltanto se dispone di proprietà da impostare nella vista Proprietà.
I metodi set delle proprietà sono generati nel metodo initialize(),
altrimenti, se la classe estende java.awt.Applet, verrà utilizzato il metodo init().