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 :

Accéder au JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut Accéder au JFrame
    Bonjour je suis confronté à un problème, j'ai une classe "conteneur" qui hérite de JPanel est qui est le content pane de ma JFrame qui est créée dans la classe "principal" à l'intérieur de la fonction main, dans mon content pane(Conteneur) j'ai un bouton "minimize" et j'ai un mouse listener sur ce dernier, et je voudrais pouvoir accéder à la fonction setExtendedState de ma JFrame.
    Comment je peux faire ?
    Merci d'avance.

    Class "principal"
    --JFrame<---------------------------------
    Class "conteneur"(content pane de JFrame) |
    --btn_Minimize>----------------------------

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,

    depuis n'importe lequel des sous-panels de ta JFrame, tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Container topLevel = monPanel.getTopLevelAncestor();
    //On peut aussi faire
    //Container topLevel = monJButton.getTopLevelAncestor();
    //Puisque tu recherches directement le haut de la hierarchie.
     
     
    //Faire les vérifications d'usage avant un cast
    JFrame maJFrame = (JFrame) topLevel;
    ou sinon une pratique générale consiste à rajouter un attribut JFrame au JPanel et à le préciser dans le constructeur de ta classe JPanel ou via un setter.

    Pour la bonne pratique j'ai pas d'opinion
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    merci de ta réponse, si je veux faire un setExtendedState (toplevel.ICONIFIED) par exemple, à l'intérieur de ma classe Conteneur et à partir du code que tu m'as donné, comment je fais ? merci d'avance.

  4. #4
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Du coup ça donnerai quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Container topLevel = this.getTopLevelAncestor();
    //Faire les vérifications d'usage avant un cast
    JFrame maJFrame = (JFrame) topLevel;
    maJFrame.setExtendedState(JFrame.ICONIFIED) // Comme ICONIFIED est un champ statique, par convention je préfère le récupérer en utilisant la classe plutot qu'une instance (je ne sais pas s'il y a des raisons techniques qui poussent vers l'un ou l'autre)
    Juste pour le détail, rappelle-toi que pour le compilateur, topLevel n'est qu'un "Container", et n'a donc pas de champ ICONIFIED. Seul "maJFrame" possède ce champ car c'est déclaré en JFrame.
    Même si au runtime "topLevel" et "maJFrame" pointent vers le même objet, il faut bien saisir la nuance.


    edit: en plus j'avais fais une erreur: getTopLevelAncestor() renvoie un Container et pas un JComponent (les compilateurs attentifs auront rectifié d'eux-mêmes )
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Merci ça marche à merveille, et bonne année 2013.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment accéder une JFrame par un button
    Par haroun03 dans le forum Débuter
    Réponses: 2
    Dernier message: 01/05/2010, 10h52
  2. Accéder aux propriétés de la JFrame
    Par Valenten dans le forum NetBeans
    Réponses: 4
    Dernier message: 07/08/2009, 11h43
  3. Réponses: 6
    Dernier message: 05/06/2009, 17h02
  4. accèder à une JFrame à partir d'une JDialog modale
    Par melle_marwa dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 07/05/2009, 22h42
  5. comment accéder à un JDialog à partir d'un JFrame
    Par polonain2 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 15/05/2008, 18h31

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