salut,
effectivement dans ton cas, tu as tout interet as créer une nouvelle classe.
Le mieux a faire est de la dérivée de JDialog car c'est plus sympa pour récupérer les infos et de plus, tu peux la rendre modale (c'est a dire que tu obliges l'utilisateur a devoir la fermer pour pouvoir retravailler sur la fenetre principale).
Pour l'échange de données, soit tu te fait des méthodes get pour chaque info que tu veux récupérer, soit tu fais une méthode qui te renvoit une HashMap qui contiendra toutes tes infos (HashMap, HashTable ou Vector ... peut importe)
Exemple :
la classe dérivée de JDialog (faudra rajouter les imports !)
public class NouvelleFenetre extends JDialog implements ActionListener { private JButton _ok; private HashMap _infos;
public NouvelleFenetre() { super(new JFrame(),"titre",true); /* le premier arg t'évite d'avoir a passer en arg a ton constructeur ta fenetre principale ! le 2eme arg c'est le titre, le 3eme arg rend ta dialog modale, apres tu construit ta fenetre comme pour une JFrame*/
_ok = new JButton("ok"); _ok.addActionListener(this); }
public void startDialog() { // lance le dialogue avec ta fenetre // tant que le setVisible(false) n'a pas lieu, // c'est ta fenetre qui garde la main !! setVisible(true);
// tu peux rajouter ici d'autres traitements // par exemple : _infos = new HashMap(); }
public void actionPerformed(ActionEvent e) { // si ton bouton de valid s'appelle ok if (e.getSource() == ok) { // tu remplit ta map avec tes champs // par ex si tuas un champ text _nom _infos.put("nom", _nom.getText()); ......
// la tu mets fin au dialogue et tu rends la main // a ta fenetre setVisible(false); } }
// Méthode pour récupérer les infos public HashMap getInfos() { return _infos; } }
|
Pour ta fenetre principale quelque part dans le code:
NouvelleFenetre fen = new NouvelleFenetre(); fen.pack();
// tu lances le dialogue fen.startDialog();
// tu récupère les données quand le dialogue est fini HashMap donnees = fen.getInfos();
|
Voila
Duss