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

Agents de placement/Fenêtres Java Discussion :

[JFrame] Désiconifier toutes les autres fenêtres en même temps


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Points : 31
    Points
    31
    Par défaut [JFrame] Désiconifier toutes les autres fenêtres en même temps
    bonjour,

    j'ai une jframe avec des jdialog comme fenetres filles. dans mon applis j'ai fait de sorte que chaque fenetre (jframe ou jdialog) ouverte elle gele toutes les fenetre precedantes
    le probleme est lorsque je fait alt+Tab pour aller sur une autre applis ouverte sous windows (donc mon applis se reduit dans la barre de tache automatiquement) et je veux l'agrandir il'ya seulement la fenetre active qui s'affiche et pas les autre et moi je veux que toutes les fenetre ouvertes s'agrandissent au meme temps.

    merci d'avance

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Je ne vois pas de solution "toute faite".
    Voilà comment je procéderais. Tu définis une classe héritée de WindowAdapter :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class FrameManager extends WindowAdapter {
      private FrameManager instance = new FrameManager();
      private ArrayList frames;
      private boolean deiconifying;
     
      public static FrameManager getInstance() {
        return instance;
      }
     
      public void addFrame(Frame frame) {
        frames.add(frame);
      }
     
      public void removeFrame (Frame frame) {
        frames.remove(frame);
      }
     
      public void windowDeiconified(WindowEvent e) {
        if (!deiconifying) {
          deiconifying = true;
          deiconifyAll();
          deiconifying = false;
        }
      }
     
      private FrameManager() {
        frames = new ArrayList();
      }
     
      private void deiconifyAll() {
        for (int i = 0, size = frames.size(); i < size; i++) {
          Frame frame = (Frame) frames.get(i);
          frame.setExtendedState(Frame.NORMAL);
        }
      }
    }
    Cette classe maintient la liste des JFrame de ton application. A chaque fois que tu crées une nouvelle JFrame, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JFrame frame = new JFrame(...);
    FrameManager.getInstance().add(frame);
    frame.addWindowListener(FrameManager.getInstance());
    ou alors tu te crées une classe héritée de JFrame qui fait le travail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class ManagedFrame extends JFrame {
      public ManagedFrame(...) {
        super(...);
        FrameManager.getInstance().add(this);
        addWindowListener(FrameManager.getInstance());
      }
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    merci herve91,

    j'ai essayé avec ça mais ça pas marché ,en fait mon applis contient une jframe principale et toutes les autres fenetres filles sont des jdialog,

    j'avais deja une classe que j'ai nommé Session qui contient les 2 methodes suivantes mais j'ai l'mpression que le code que tu m'as donné ça marche qu'avec des jframes



    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public class Session
     {
     
       private static Vector frames = new Vector();
     
     public void add(Container arg) {
            if (frames.isEmpty()) {
                getFrames().add(arg);
     
     
            } else {
                Container parent = (Container) getFrames().lastElement();
                parent.setEnabled(false);
                getFrames().add(arg);
     
            }
        }
     
        public void remove(Container arg) {
     
            boolean del = getFrames().remove(arg);
     
            if (del) {
                Container parent = (Container) getFrames().lastElement();
                parent.setEnabled(true);
     
            }
    }
        }
    désolé pour le code c'est un peu du bricolage je suis debutant

  4. #4
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Si toutes les fenêtres filles sont rattachées à la JFrame principale, elles seront iconifiés/désiconifiées lors de l'iconification/désiconification de la JFrame, c'est le comportement standard des JDialog disposant d'un parent. Par contre, des JDialog non rattachées à une JFrame ou à une JDialog ne sont pas prises en compte.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    herve91
    c'est le comportement standard des JDialog disposant d'un parent
    meme si le parent est une jdialog aussi parcque j'ai essayé le code que tu m'as donné et ça pas marché

  6. #6
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    oui, à condition que le parent ancêtre soit une JFrame.
    Chez moi le code suivant fonctionne :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class TestFrameManager {
      public TestFrameManager() {
        JFrame frame1 = new JFrame("frame1"); 
        FrameManager.getInstance().addFrame(frame1); 
        frame1.addWindowListener(FrameManager.getInstance());
     
        JFrame frame2 = new JFrame("frame2"); 
        FrameManager.getInstance().addFrame(frame2); 
        frame2.addWindowListener(FrameManager.getInstance());
     
        JDialog dialog1 = new JDialog(frame1, "dialog1");
        JDialog dialog2 = new JDialog(frame1, "dialog2");
        JDialog dialog3 = new JDialog(dialog1, "dialog3");
        JDialog dialog4 = new JDialog(frame2, "dialog4");
        JDialog dialog5 = new JDialog(dialog4, "dialog5");
        frame1.setVisible(true);
        frame2.setVisible(true);
        dialog1.setVisible(true);
        dialog2.setVisible(true);
        dialog3.setVisible(true);
        dialog4.setVisible(true);
        dialog5.setVisible(true);
    }
     
      public static void main(String[] args) {
        new TestFrameManager();
      }
    }
    Il faut bien sûr désiconifier une des deux JFrame pour que l'autre le soit également.

Discussions similaires

  1. Ouverture d'un fenêtre devant toutes les autres
    Par MayOL69bg dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/04/2007, 18h44
  2. Imprimer toutes les colonnes sur une même feuille
    Par Soulghard dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 12h10
  3. ShowMessage "caché" derrière les autres fenêtres
    Par OutOfRange dans le forum Langage
    Réponses: 9
    Dernier message: 23/07/2005, 10h43
  4. Réponses: 1
    Dernier message: 16/02/2005, 12h04
  5. Réponses: 2
    Dernier message: 09/07/2003, 14h10

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