jGoodies - par Romain Papuchon

Code correspondant

Voici le code correspondant à la préparation préalablement faite sur papier:

Maintenant que les composants ont été bien définis, l'implémentation du code est un jeu d'enfant.

Création du Layout

Le code suivant permet de créer le Layout de la librairie Forms, le FormLayout. Le premier paramètre correspond à l'ensemble des colonnes définies dans la préparation. Le deuxième correspond aux lignes. Ce sont tous les deux des paramètres de type String, ce qui facilite la lecture.


FormLayout layout = new FormLayout(
/*colonnes*/
"9dlu, left:pref, 3dlu, pref:grow, pref, pref, pref:grow, pref, pref, pref:grow, 9dlu:grow, 9dlu, left:pref, 3dlu, pref:grow, pref",
/*lignes*/
"pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 9dlu:grow, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref");

Nous avons vu ce que signifient les tailles dans la rubrique Préparation sur papier. Prenons l'exemple du 9dlu:grow. Cela signifie que la colonne nº11 est de taille minimum de 9dlu et qu'elle va s'agrandir lors du redimentionnement de la fenêtre graphique.

Lignes et colonnes jumelles

Nous avions définis des contraintes sur la taille des lignes et des colonnes dans la partie précédente. Nous allons maintenant créer des groupes de colonnes et de lignes qui auront les mêmes propriétés. Ici, par exemple, les colonnes nº2, 13 et 16 sont réunies.


/*Création des contraintes de tailles*/
layout.setColumnGroups(new int[][]{{2, 13, 16}, {4, 7, 10}, {5, 8}, {6, 9}});
layout.setRowGroups(new int[][]{{1, 3, 5, 7, 9, 11, 13}});

Création du builder

Le builder va nous permettre de construire le container avec l'ensemble de nos composants selon les contraintes définies dans l'étude précédente.


/*Création du builder*/
PanelBuilder builder = new PanelBuilder(layout);
/*Petite marge par rapport au Panel*/
builder.setDefaultDialogBorder();

Ajout des composants

Voici comment insérer les composants dans le builder. Il faut toujours avoir le schéma graphique en parallèle pour la construction. Pour cela, je le remet.

croquis avec lignes et colonnes

Il faut ajouter les composants dans le builder à l'aide de l'objet contrainte. Pour cela, l'objet builder contient une méthode add. Celle-ci prend un composant comme premier paramètre et un objet CellConstraints en deuxième paramètre. On place alors le composant à insérer en premier paramètre et on spécifie le placement dans le dexière paramètre à l'aide d'un objet CellConstraints. Il existe plusieurs méthodes sur cette contrainte:

Il existe aussi quelques méthodes précodés assez utiles:


/*Création de l'objet contrainte*/
CellConstraints cc = new CellConstraints();

/*Ajout des champs dans le builder                 (col, line, width, height) */
builder.addSeparator("Civilité",            cc.xyw (1  , 1   , 10           ));
builder.addLabel("Nom :",                   cc.xy  (2  , 3                  ));
builder.add(nomField,                       cc.xyw (4  , 3   , 7            ));
builder.addLabel("Prénom :",                cc.xy  (2  , 5                  ));
builder.add(prenomField,                    cc.xyw (4  , 5   , 7            ));
builder.addLabel("Sexe :",                  cc.xy  (2  , 7                  ));
builder.add(hommeCheck,                     cc.xy  (5  , 7                  ));
builder.addLabel("homme",                   cc.xy  (6  , 7                  ));
builder.add(femmeCheck,                     cc.xy  (8  , 7                  ));
builder.addLabel("femme",                   cc.xy  (9  , 7                  ));
        
builder.addSeparator("Filière",             cc.xyw (1  , 9   , 10           ));
builder.add(filiereList,                    cc.xy  (2  , 11                 ));
builder.add(modifier,                       cc.xyw (8  , 11  , 3            ));
builder.addLabel("Description :",           cc.xy  (2  , 13                 ));
builder.add(descriptionAreaFiliere,         cc.xyw (2  , 15  , 9            ));
        
builder.addSeparator("Commentaire",         cc.xyw (12 , 1   , 5            ));
builder.addLabel("Titre :",                 cc.xy  (13 , 3                  ));
builder.add(titreField,                     cc.xy  (15 , 3                  ));
builder.addLabel("Description :",           cc.xy  (13 , 5                  ));
builder.add(descriptionAreaCommentaire,     cc.xywh(13 , 7   , 4    , 4     ));
        
builder.add(imgLabel,                       cc.xywh(14 , 12  , 2    , 4     ));

Création de l'interface graphique

Voici le code de l'interface graphique qui va permettre de créer la frame et de la rendre visible.


JFrame frame = new JFrame("jGoodies :: Papuch Forms");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(builder.getPanel());
frame.pack();
frame.setVisible(true);

Ça y'est, il ne vous reste plus qu'à lancer le main pour avoir la belle interface !!!

Valid XHTML 1.0 Strict