Il existe plusieurs styles ou méthodes pour écrire le code Java. L'éditeur visuel utilise un style particulier pour le code Java qu'il génère.
Visual Editor for Java génère du code Java valide qui peut être compilé et exécuté. En outre, lorsque l'éditeur visuel effectue l'analyse syntaxique du code Java, il utilise des règles pour déterminer les éléments du code à visualiser dans la vue Conception.
Règles pour le code susceptible d'être soumis à une analyse syntaxique
Visual Editor for Java tente de visualiser le code dans la vue Conception si celui-ci répond à l'un des critères suivants :
L'éditeur visuel vérifie d'autres critères avant d'autoriser la visualisation d'un composant dans la vue Conception :
- Les zones doivent être instanciées au sein d'une méthode get ou le bean doit être initialisé par une méthode d'initialisation répertoriée dans l'onglet Styles de modèle de la page Préférences de l'éditeur visuel. Dans l'image suivante, les méthodes
jbInit, initComponents et
initialize sont indiquées sous la forme de méthodes d'initialisation :
- Il ne doit pas y avoir d'erreurs de compilation sur la ligne.
- Une classe doit être valide pour le chargement et l'instanciation.
- La plupart des expressions d'initialisation de tableaux ne peuvent pas être évaluées.
- Les expressions incluant des concaténations arithmétiques ou de chaînes avec l'opérande + ne sont pas évaluées.
L'analyse syntaxique est effectuée sur la plupart des expressions mais certaines expressions ne peuvent pas être correctement évaluées. Dans ce cas, un signe d'avertissement s'affiche en regard du bean Java dans les vues et l'origine de l'erreur apparaît dans la ligne d'état lorsque vous sélectionnez le bean dans la vue Conception ou dans la vue Beans Java.
Une icône d'avertissement s'affiche également sur le canevas.
Code source généré par l'éditeur visuel
- L'éditeur visuel génère des constructeurs par défaut qui appellent la méthode initialize() afin qu'elle définisse les valeurs des propriétés de la classe.
- Pour les applets, le code permettant de définir les valeurs des propriétés initiales est appelé via init().
Il n'est pas appelé par le constructeur car il est exécuté par le navigateur d'applet lui-même.
- Facultatif : Vous pouvez indiquer que l'éditeur visuel doit générer des blocs try{}catch() pour les composants. Dans ce cas, les exceptions générées lors de l'initialisation sont systématiquement interceptées et le risque de suppression d'exception augmente.
Il est donc recommandé de ne pas intercepter l'exception. Vous pouvez sélectionner
cette option dans l'onglet Génération de code des préférences de l'éditeur visuel ().
Le code ci-dessous permet d'afficher un élément JPanel initialisé avec le bloc try{}catch() :
private JPanel getJPanel1() {
if (jPanel1 == null) {
try {
jPanel1 = new JPanel();
}
catch (java.lang.Throwable e) {
// TODO: Something
}
}
return jPanel1;
}
Le code suivant affiche un élément JPanel sans le bloc try{}catch() :private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
}
return jPanel;
}
- Facultatif : Vous pouvez également indiquer que l'éditeur visuel doit ajouter un commentaire pour signaler chaque expression qu'il génère. Cette option peut être utile pour distinguer le code écrit manuellement du code généré. La ligne de code suivante est un exemple de commentaire :
this.add(getJPanel(), null); // Code généré
Pour activer cette option, cochez la case
Générer un commentaire pour les nouvelles expressions dans l'onglet Génération de code des préférences de l'éditeur visuel.
- Pour Swing/AWT, l'éditeur visuel génère des méthodes (telles que getPanel()) qui instancient et renvoient un bean Java unique mais cette règle n'est pas une obligation. Une méthode peut instancier plusieurs beans Java et la valeur renvoyée de la méthode n'est pas indispensable pour déterminer si la zone est un bean Java. Pour les zones anOKButton et ivjTableModel à inclure sous forme de beans Java, il est nécessaire de les instancier au sein d'une méthode get dans la classe.
- Pour SWT, l'éditeur visuel génère des méthodes private void createFoo() pour chaque classe étendant
l'élément composite et tous les beans enfant sont initialisés au sein de la même méthode.
- Si la classe modifiée étend un bean Java, l'instance modifiée est représentée avec un bean Java spécial appelé partie 'this'. Cette partie 'this' ne peut pas être supprimée de la vue Conception ou de la vue Beans Java et la méthode d'initialisation de ses propriétés est exécutée dans la méthode initialize().
Une partie 'this' apparaît uniquement dans la vue Conception et dans la vue Beans Java s'il existe des propriétés à définir dans la vue Propriétés.
Les méthodes set des propriétés sont générées dans la méthode initialize() ou, si la classe étend
java.awt.Applet, la méthode init() est utilisée.