Bonjour,
J'ai une interface swing conçue de la façon suivante :
- JDesktopPane : la fenêtre de l'application
- JInternalFrame : des fenêtres internes dans l'application
- JinternalFrame : une fenêtre interne (type popup) ouverte par la précédente (via un jbutton) et qui, quand elle est fermée (via un jbutton), doit lancer une méthode la fenêtre appelante. Cela ressemble effectivement à un comportement de type JDialog mais je ne passe pas par un JDialog car ce type de fenêtre ne me permet pas de faire des trucs qui sont indispensables. Par contre il me manque la communication retour de la fenêtre appelée vers la fenêtre appelante (je veux retourner une donnée de type complexe (une instance de classe applicative, par juste un Integer ou un string).
Le problème est que la fenêtre appelante ouvre bien la fenêtre "popup" mais comme ce n'est pas une fenêtre JDialog, elle n'attend pas que la fenêtre appelée soit fermée pour reprendre la main et continuer son traitement.
Pour que ma fenêtre popup puisse envoyer son résultat, je ne vois donc comme moyen que de passer par un listener personnalisé :
- ma fenêtre appelante a un listener qui quand il est activer lance une méthode interne getResultatPopup(Resultat res)
- ma fenêtre popup s'abonne à ce listener et quand l'utilisateur clique sur le bouton de fermeture de la fenêtre, cela ferme la fenêtre (dispose()) mais fait un "fire" pour activer le listener.
Enfin voilà ce que j'ai compris.
Ma première question : Est-ce que les principes que j'ai compris sont les bons ?
Ma deuxième question : Connaissez-vous une doc simple et intuitive qui explique comment implémenter ça en jva/swing (les tutoriaux que j'ai trouvé vont toujours dans trop d'abstrait et je suis largué au bout de 10 lignes) ?
Ma troisième question : Y a t-il un autre moyen pour faire communiquer le résultat entre mes 2 fenêtres ?
Merci d'avance
Partager