Bonjour à toutes et à tous,
Dans une application que je créé, j'ai besoin de fenêtres modales pour modifier des paramètres. J'ai procédé de la manière suivante, vos remarques m'intéressent.
Création de la fenêtre :file /file new/java GUIForms/jDialogForm
Je l'appelle MonDialog.
Dans le code source, je supprime :
qui apparemment ne me sert à rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MonDialog(new javax.swing.JFrame(), true).setVisible(true); } }); }
Je modifie la méthode MonDialog :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public SonDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); }
J'ajoute la variable OK et la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public SonDialog(MesParams prm) { // remplacement des paramètres par les miens ... // suppression de super(..) initComponents(); }
et je lance ma fenêtre par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 boolean OK = false; ... public boolean showModal() { setVisible(true); return OK; }
J'ajoute ensuite à ma fenêtre les composants qui vont bien et des boutons ; seul le bouton "Valider" met à true la variable OK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 MonDialog monDialog = new MonDialog(prm); if (monDialog.showModal()) { ... // récupération des paramètres que j'ai modifiés dans la fenêtre };
Pour la transmission / récupération des paramètres modifiables par la fenêtre, j'ai pensé à deux moyens :
- Faire la classe "MesParams" dont j'ai parlé plus haut, initialiser ses composantes avant l'appel à la fenêtre et récupération de ces paramètres si "OK"
- Ajouter des méthodes à MonDialog qui correspondent à la lecture et à l'écriture de ces paramètres, comme par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int prm1; ... public int getPrm1() { return this.prm1 } public void setPrm1(prm1) { this.prm1 = prm1; }
Bon, j'ai essayé tout cela, et apparemment, cela fonctionne bien.
Mais comme je suis un débutant en java, et que j'ai taillé ce code à la machette, j'aimerais avoir vos avis sur ce qui est correct et surtout sur ce qui ne l'est pas.
Merci de votre aide.
Pierre
Partager