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

AWT/Swing Java Discussion :

[FRAME] Connaître la frame active


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut [FRAME] Connaître la frame active
    Voila. j'ai un projet de dictionnaire, qui a une fenetre principale avec des boutons, et chacun de ces boutons mène sur une nouvelle fenetre secondaire. J'ai programmé un bouton quitter sur la fenetre principale qui fait frame.dispose().
    J'ai voulu programmer un bouton annuler commun à chaque fenetre secondaire, qui fasse aussi frame.dispose().
    Problème : vu que frame est le nom de ma Frame principale, celle ci est tjrs fermée en cas de clic sur le bouton annuler.
    Donc : comment connaître la frame active? y a t il une méthode pour cela? j'ai parcouru la javadoc, mais je n'ai trouvé que des méthodes booléennes, du type frame.isActive(), et ce n'est pas ce que je cherche.
    Merci.

  2. #2
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Si tes fenetres secondaires étendent la classe JFrame, alors tu devrais procéder comme ceci :

    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
    17
    public class SecondaryFrame extends JFrame implements ActionListener
    {
    ...
       public SecondaryFrame()
       {
          ...
          boutonFermer = new JButton("Fermer") ;
          boutonFermer.addActionListener( this ) ;
          ...
       }
    
       public void actionPerformed( ActionEvent e )
       {
          this.dispose() ;
       }
    
    }
    Mettre le this permet de ne fermer que la fenêtre qui contient le bouton que tu as cliqué.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut
    non, ça ne marche pas. le this.dispose() n'a aucun effet, que ce soit sur la fenetre secondaire ni même sur la fenetre principale. par contre, si j'appelle la frame courante par son nom, là, elle se ferme. mais vu que j'ai près d'une dizaine de fenetre secondaires, je n'ai pas envie de créer un bouton annuler pour chaque frame...

  4. #4
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Citation Envoyé par michaeljeru
    le this.dispose() n'a aucun effet
    dispose() a toujours un effet, s'il est appelé sur une objet JFrame...

    Citation Envoyé par michaeljeru
    je n'ai pas envie de créer un bouton annuler pour chaque frame...
    J'ai rien compris alors. Tu veux placer tes boutons dans ta fenêtre principale ? Et pourquoi pas un bouton dans chaque fenetre secondaire ?

  5. #5
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    Tu peux faire une classe MyJFramequi extends JFrame et qui a un bouton annuler et toutes les autres fenêtre n'extends plus JFrame mais MyJFrame.

    Ou alors pour rester dans ton idée dans ta classe principale tu crée une variable static int idFrame. tu crée une classe MyJFramequi extends JFrame.
    qui possède son id et qui surcharge focusGained()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        private void formFocusGained(java.awt.event.FocusEvent evt) {
     
            ClassePrincipale.idFrame = id;
        }
    Dans ta classe principale tu créé un vecteur de tes MyJFrame. Tu met toutes tes JFrame dedans. En n'oubliant pas de leur donner leur id dans le vecteur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Vector vect = new Vector();
    frame1.setId(0);
    vect.add(frame1);
    frame2.setId(1);
    vect.add(frame2);
    Puis quand tu appuies sur le bouton annuler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((MyJIFrame)vect.get(idFrame)).dispose();
    Enfin c'est juste une idée

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut
    bon, en fait, j'ai changé mon code, au lieu d'afficher des frames secondaires, j'affiche ces "frames" dans un panel sur ma frame principale.
    J'ai pratiquement sur chacune des "frames" appellées un bouton annuler, que j'ai programmé pour rendu le panel affiché non visible, par un panel.setVisible(false);

    ce que je cherche, c'est une méthode si elle existe, qui me renverrai le panel contenu dans le panel qui contient et affiche toutes mes "frames" secondaires, de sorte que par l'appel de cette fonction getContents() par exemple me retourne le "panel actif", et que je puisse écrire : panel.getContents().setVisible(false);

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/02/2011, 16h57
  2. [JInternalFrame][JDialog] Connaître le frame de dépar
    Par TreizeSegments dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 21/07/2009, 10h55
  3. Connaître la frame courante
    Par schniouf dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/10/2006, 15h23
  4. [Frames] connaître la dimension en pixel d'une frame.
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/02/2006, 17h05

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