IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Bien jongler avec les fenêtres


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 149
    Points : 73
    Points
    73
    Par défaut Bien jongler avec les fenêtres
    Bonjour

    Après recherches sur les forums, j'arrive a ouvrir une autre fenêtre a partir de la fenêtre principale.

    La ou les autres fenêtres sont de JFrames.

    Mon soucis et de revenir a la première fenêtre que j'ai mis en dispose().
    comment la réactiver à partir de la deuxième?

    merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par lio908 Voir le message
    Mon soucis et de revenir a la première fenêtre que j'ai mis en dispose().
    Tu veux dire que tu fermes une fenêtre pour en ouvrir une autre, que tu voudrais réouvrir la première lorsque tu fermes la seconde ? Exactement pareil que lors de la première ouverture de la première. S'il y a plusieurs successions de fenêtres et qu'il faut revenir à la précédente, il faut passer un "moyen" d'ouvrir la bonne fenêtre (cette précédente) : l'ouverture nécessitant une instanciation, il faudra avoir un moyen d'instancier (un handler qui fait le même code que lors de la première ouverture).

    Fonctionner de telle manière peut devenir assez compliqué. Un moyen de simplifier est déjà de faire que la première fenêtre, celle qui ouvre l'autre contrôle sa propre réouverture (ou son réaffichage, c'est-à-dire qu'au lieu de la fermer, on la cache). Cela peut se faire par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class PremiereFenetre extends JFrame {
    private void afficherFenetreSuivante() {
        JFrame fenetreSuivante = new DeuxiemeFenetre("...");
        fenetreSuivante.addWindowListener(new WindowAdapter() {
            public void windowClose(WindowEvent event) {
                PremiereFenetre.this.setVisible(true);
            }
        });
        this.setVisible(false); // on cache
        fenetreSuivante.setVisible(true);
    }
    Cela devient plus compliqué si tu as plusieurs fenêtres qui se succèdent : il faudra mémoriser chaque instance, pour ne les créer qu'une seule fois, ou faire des singletons si chaque fenêtre ne peut être affichée qu'une seule fois à la fois (comme la doc par exemple).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class PremiereFenetre extends JFrame {
     
    private JFrame fenetreSuivante;
     
    private void afficherFenetreSuivante() {
        if ( fenetreSuvante == null ) {
            fenetreSuivante = new DeuxiemeFenetre("...");
            fenetreSuivante.addWindowListener(new WindowAdapter() {
                public void windowClose(WindowEvent event) {
                    PremiereFenetre.this.setVisible(true);
                }
            });
        }
        this.setVisible(false); // on cache
        fenetreSuivante.setVisible(true);
    }


    Ça peut cependant devenir rapidement une usine à gaz. Surtout si chaque fenêtre peut s'afficher depuis n'importe quelle fenêtre. On pourrait créer une classe qui servirait de pile de fenêtres, mais ça ne résoud pas tout de manière simple.

    La solution est probablement ailleurs, dans une gestion différente de l'interface :
    • Utiliser des JInternalFrames dans un JDestopPane ;
    • Utiliser des JDialogs modaux ;
    • Utiliser des JFrames indépendantes du contexte d'interface (qui s'en moque de la fenêtre précédente ;
    • Utiliser une notion de contexte global ou local, pour communiquer entre JInternalFrames, ou JFrames indépendantes si absolument nécessaire.

Discussions similaires

  1. [UISpec4J] Probleme avec les fenêtres modales
    Par Riasroc dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 20/04/2010, 16h42
  2. Problème avec les fenêtres d'aides
    Par seb49 dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 01/02/2010, 14h37
  3. recharger la page avec les fenêtres principales
    Par bracket dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/02/2009, 23h42
  4. Réponses: 4
    Dernier message: 15/03/2006, 10h31
  5. Réponses: 1
    Dernier message: 26/02/2005, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo