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 :

TreeSelectionListener: Votre avis m'intéresse


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut TreeSelectionListener: Votre avis m'intéresse
    Bonjour,
    Je travaille actuellement sur une petite appli avec JTree. L'arbre contient 4 nodes (fournisseur, client, produit et catégorie). J'ai également 4 Jpanel dans des classes différentes (PanelFournisseur, PanelClient, PanelProduit et PanelCategorie). Mon idée est d'afficher le panel respectif quand je clique sur un noeud. Par ex: si je clique sur le noeud "client", c'est "PanelClient" qui sera affiché. J'ai donc procédé comme suit :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    private JTree jTree;
    private DefaultMutableTreeNode fournisseur;
    private DefaultMutableTreeNode client;
    private DefaultMutableTreeNode libelle;
    private DefaultMutableTreeNode cat;
    ...
     
    public class JTreeS extends JSplitPane implements TreeSelectionListener{
    ...
    jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    jTree.addTreeSelectionListener(this);
     
    ...
    public void valueChanged(TreeSelectionEvent e) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
            if (node == null){
                return;
            }
            node.getUserObject();
            if (!node.isLeaf()){
                if (node.equals(client)) {
                    PanelClient pc = new PanelClient();
                    pc.setVisible(true);
                    this.setRightComponent(pc);
                    this.setDividerLocation(300);
                    System.out.println("Classe PanelClient chargée");
                } else if (node.equals(fournisseur)) {
                    PanelFournisseur pf = new PanelFournisseur();
                    pf.setVisible(true);
                    this.setRightComponent(pf);
                    this.setDividerLocation(300);
                    System.out.println("Classe PanelFournisseur chargée");
                } else if (node.equals(cat)) {
                    PanelCategorie pc = new PanelCategorie();
                    pc.setVisible(true);
                    this.setRightComponent(pc);
                    this.setDividerLocation(300);
                    System.out.println("Classe PanelCategorie chargée");
                } else if (node.equals(libelle)){
                    PanelProduit pp = new PanelProduit();
                    pp.setVisible(true);
                    this.setRightComponent(pp);
                    this.setDividerLocation(300);
                    System.out.println("Classe PanelProduit chargée");
                }                
            }//fin if (!node.isLeaf())
        }//fin méthode valueChanged(TreeSelectionEvent e)
    }//fin classe
    J'arrive à afficher les panels en fonction du nœud cliqué mais j'ai le sentiment que ça ressemble plutôt à du "bidouillage". J'aimerais donc savoir s'il existe d'autres moyens, disons plus "pro".
    autre question: Vu le code ci-dessus, que devient le panel précédant quand j'affiche un nouveau? Le 1e est supprimé (enlevé) ou simplement le 2e est affiché par dessus le 1e?
    Merci d'avance de vos impressions/réponses.

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Pour gérer un affichage de ce type, il faut utiliser un CardLayout dans lequel tu vas mettre tout tes panels et ensuite choisir le panel à afficher.

    Avec ton code, le panel précédent est remplacé par le nouveau. La mémoire qu'il utilise sera libérée par le garbage collector.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut
    Merci de ta réponse;
    Je vais essayer ton idée de cardlayout.

Discussions similaires

  1. Réponses: 13
    Dernier message: 01/02/2008, 22h55
  2. DIV/CSS c'est la galère ! Votre avis m'intéresse
    Par bigsister dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 16/11/2007, 14h09
  3. Votre avis m'intéresse - plusieurs agrument dans une URL
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 19/03/2007, 17h56
  4. Votre avis m'intéresse
    Par philippef dans le forum Mon site
    Réponses: 1
    Dernier message: 08/09/2006, 17h02

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