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

Composants Java Discussion :

Changer le JPanel dans le MousseListener d'un JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut Changer le JPanel dans le MousseListener d'un JTable
    salut les développeur..
    j'ai un petit problème concernant la récupération du conteneur dans le MousseListener de JTable.
    je veux changer le panneau de ma fenêtre par un autre en cliquant sur une ligne

    voici mon code:

    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
     
    JTable.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
    //phase1:
    des instruction pour récupérer le bon dossier
    ........    
    //phase2:j'ai utilisé ça pour changer le JPanel:
    this.setLayout(new FlowLayout());
    this.removeAll();
    this.add(d);
    //d c'est le dossier que j'ai remplie dans la1ere phase ,il est sous forme de JPanel 
      this.revalidate();
              this.repaint(); 
     
      }});
    mais j'ai des erreurs qui signifient que je dois créer les méthode setLayout(),RemoveAll()... dans anonymouse java .awt.Event.MoseAdapter .

    j'ai resolu ça (phase2) par cette instruction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Principale p= new Principale();
               p.setContentPane(d);
            p.validate();
             p.repaint();
            p.setTitle("Dossier médical");
     
            p.setVisible(true);
    pour créer une nouvelle instance de ma fenêtre principale et mettre dedans le dossier récupéré mais là c'est pas beau ni professionnel d'avoir des fenêtre flottante...
    quelqu'un peut me donner une idée pour changer mon panel lors de l'action??
    ps:je suis sur de mon code je l'ai essayé sur l'actionPerformed d'un JButon et ça a fonctionné trés bien

    d'avance merci pour votre aide
    cordialement

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 149
    Par défaut
    Au lieu de supprimer tout le contenu de ta frame, tu devrais plutôt mettre celui-ci dans un JPanel conteneur et l'englober dans un CardLayout. Ainsi tu appelle simplement tonCardLayout.show(tonPanelConteneur , listContent[?]) quand tu veux changer de panel!
    Si tu as besoin de plus d'explications, ou même d'un exemple complet de CardLayout, n'hésite pas à demander!

  3. #3
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    merci beaucoup JeremGamer....
    un exemple explicatif me sera trés bénéfique,s'il vous plait

  4. #4
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    mon probléme n'est pas que j'utilise le cardLayout ou j'efface le contenu ,mais le probléme reside que à l'interieur de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JTable.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
    ..............
      }});
    le this n'est pas reconnu comme JPanel d'aprés l'erreur mais c'est le Listener ,voila une image qui pourra expliquer mon probléme.
    je veux parler avec le JPanel et non pas le Lisetner
    Nom : Sans titre.png
Affichages : 196
Taille : 59,7 Ko

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par selmagsi Voir le message

    mais j'ai des erreurs qui signifient que je dois créer les méthode setLayout(),RemoveAll()... dans anonymouse java .awt.Event.MoseAdapter .
    Je suppose que tu as fais un truc du genre

    table.addMouseListener(new MouseAdapter(){....}};

    Dans ce cas, this, à l'intérieur de mouseClicked, référence l'instance de MouseAdapter, pas l'instance globale. Le plus simple est de retirer les this, et ça devrais marcher. Sinon, tu remplacer this par la variable représentant panneau en question que tu veux modifier:

    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 Machin .... {
       private JPanel lePanneau;
       //....
       lePanneau = .....
       laTable = .....
       //....
       laTable.addMouseListener(new MouseAdapter(){
           //.....
           lePanneau.setLayout(new FlowLayout());
           lePanneau.blablaba....
           //.....
           }
       });
     
    }

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut merci Tchiz
    j'ai travaillé avec le getParent() mais ça n'a pas fonctionné à 100%
    voila ce que j'ai en 1er:
    Nom : 1.png
Affichages : 193
Taille : 45,7 Ko

    en cliquant sur l'une des ligne je dois afficher le dossier du patient correspondant(ça a marché avec la creation d'une nouvelle instance de ma fenetre mais c'est pas mon but).
    donc j'ai utilisé ce code:

    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
    JTable.addMouseListener(new MouseAdapter(){
           //.....récupération des données
     
           //.....
              getParent().setVisible(false);
    getParent().setLayout(new FlowLayout());
    //c'est le dossier à afficher(c un paneau)
    getParent().add(d);
    getParent().setVisible(true);
    //getParent().invalidate();
    getParent().revalidate();
    getParent().repaint();   
     
     
           }
       });
     
    }
    mais voila ce que j'ai en résultat:

    Nom : 2.png
Affichages : 198
Taille : 67,6 Ko

    le 1er panneau ne se cache pas :/ ce qui est bizard que ça marche ce code dans actionPerformed d'un bouton et ça me donne ça:

    Nom : 3.png
Affichages : 267
Taille : 39,8 Ko


    et c'est ce qui est demandé...
    pouvez vous me donner une idée sur ce probléme??
    merci

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a aucun moment dans ton code tu ne retire ce qui existe, donc comment pourrais-tu avoir autre chose que les deux panneaux en même temps?

  8. #8
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 464
    Par défaut
    merci tchiz,vous avez raison,j'ai oublié un détail quand je fait getParent().removeAll() avant d'y ajouter le paneau d,j'ai la fentre toute vide en cliquant, et remove all marche dans le ActionPerformed du bouton!!

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    de toutes façons, tu devrais éviter de jouer avec getParent(). Après le removeAll(), si ton composant a été retiré, getParent() à partir de ce composant va retourner null!

Discussions similaires

  1. [JTable] Inserer un JPanel dans une cellule d'un JTable
    Par Babas007 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 13/04/2011, 11h13
  2. Réponses: 2
    Dernier message: 23/03/2011, 16h12
  3. Réponses: 0
    Dernier message: 23/03/2011, 01h23
  4. Changer Jpanel dans Jframe avec MVC
    Par ar0w4n4 dans le forum Débuter
    Réponses: 1
    Dernier message: 08/11/2010, 13h43
  5. [NetBeans 5.5] Changer de jPanel dans un jFrame ?
    Par MAXXPER dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 13/11/2006, 07h18

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