action sur un jtree

action sur un jtree - Java - Programmation

Marsh Posté le 13-09-2005 à 10:31:57    

bonjour, j'aimerais que lorsque je clique sur un noeud de mon jtree un panel spécifique  vienne s'afficher dans ma frame, mais je vois pas comment faire  [:darkmavis xp]

Reply

Marsh Posté le 13-09-2005 à 10:31:57   

Reply

Marsh Posté le 13-09-2005 à 10:51:05    

Code :
  1. void tree_valueChanged(TreeSelectionEvent e)
  2.   {
  3.     DefaultMutableTreeNode node = (DefaultMutableTreeNode)
  4.         tree.getLastSelectedPathComponent();
  5.     if (node == null)
  6.     {
  7.       return ;
  8.     }
  9.     Object nodeInfo = node.getUserObject();
  10.     if (node.toString()== "Liste des abonnés" )
  11.     {
  12.       jPanel1.add(pnlListAbonnés,null);
  13.     }
  14.     if (node.toString()== "Ajouter un abonné" )
  15.     {
  16.       jPanel1.add(pnlNewAbonné,null);
  17.     }
  18.     if(node.toString() == "Ajouter un abonnement" )
  19.     {
  20.       jPanel1.add(pnlNewAbonnement,null);
  21.     }
  22.     else
  23.     {
  24.     }
  25.   }
  26. }

bon j'ai fait ca, ca me change de panel quand je clique sur un noeud, seulement ca ne marque qu'une seule fois, je ne peux pas revenir à un précédent panel

Reply

Marsh Posté le 13-09-2005 à 11:15:10    

Tu vides le jPanel1 de ses composants precedements ajoutes ?

Reply

Marsh Posté le 13-09-2005 à 14:53:44    

faut que je fasse un jPanel1.removeall() à chaque if ?

Reply

Marsh Posté le 13-09-2005 à 15:27:21    

Disons que ton jPanel1, si tu selectionnes liste des abonnées, il se voit ajouter un panel, quand plus tard tu reviens dessus, que tu selectionnes autre chose, tu ajoute un autre panel, mais tu effaces pas l'ancien, a moins que tu instancies un jPanel1 a chaque fois que tu passes par la, mais ça on ne peut pas savoir avec ton bout de code.

Reply

Marsh Posté le 15-09-2005 à 11:04:03    

Code :
  1. void this_mouseClicked(MouseEvent e)
  2.   {
  3.     TreePath path ;
  4.     DefaultMutableTreeNode node = (DefaultMutableTreeNode)
  5.       tree.getLastSelectedPathComponent();
  6.     if(e.getClickCount() == 2)
  7.     {
  8.      
  9.       if(node.toString().equals("Liste des abonnés" ))
  10.       {
  11.         gui.jPanelFenetres.removeAll();
  12.         gui.jPanelFenetres.add(pnlListAbonnés,null);
  13.         gui.jPanelFenetres.updateUI();
  14.       }
  15.       if(node.toString().equals("Liste des abonnés" ))
  16.       {
  17.         gui.jPanelFenetres.removeAll();
  18.         gui.jPanelFenetres.add(pnlListAbonnés,null);
  19.         gui.jPanelFenetres.updateUI();
  20.       }
  21.       if(node.toString().equals("Liste des abonnés" ))
  22.       {
  23.         gui.jPanelFenetres.removeAll();
  24.         gui.jPanelFenetres.add(pnlListAbonnés,null);
  25.         gui.jPanelFenetres.updateUI();
  26.       }
  27.     }
  28.   }

j'ai refait un truc comme ca mais la ca marche plus du tout :D

Reply

Marsh Posté le 15-09-2005 à 11:27:55    

Reprenons :) Qu'est ce qui ne marche pas dans ton code ?
 
Ton mouseClicked a l'air correct.

Reply

Marsh Posté le 15-09-2005 à 11:30:33    

j'ai fait un system.out.println après le 1er if et il n'apparait meme pas, je pige rien

Reply

Marsh Posté le 15-09-2005 à 11:34:01    

en fait oui le système.out apparait maintenant mais les panels ne s'ajoutent pas

Reply

Marsh Posté le 15-09-2005 à 11:34:48    

On utilise pas le toString de ttes façons, cherche vers node.getUserObject() plutôt :)

Reply

Marsh Posté le 15-09-2005 à 11:34:48   

Reply

Marsh Posté le 15-09-2005 à 11:36:17    

Tes panels, ont des preferedSize ? Ils sont "visible" ?

Reply

Marsh Posté le 15-09-2005 à 11:40:09    

oui :D

Reply

Marsh Posté le 15-09-2005 à 11:40:47    

c'est ca ma dernièer version en fait

Code :
  1. void tree_mouseClicked(MouseEvent e)
  2.   {
  3.     TreePath path ;
  4. if(e.getClickCount() == 2)
  5. {
  6.    path = tree.getSelectionPath();
  7.    if(path.toString().equals("Liste des abonnés" ))
  8.    {
  9.      gui.jPanelFenetres.removeAll();
  10.      pnlListAbonnés.setVisible(true);
  11.      gui.jPanelFenetres.add(pnlListAbonnés,null);
  12.      gui.jPanelFenetres.updateUI();
  13.    }
  14.    if(path.toString().equals("Liste des abonnés" ))
  15.    {
  16.      gui.jPanelFenetres.removeAll();
  17.      gui.jPanelFenetres.add(pnlListAbonnés,null);
  18.      gui.jPanelFenetres.updateUI();
  19.    }
  20.    if(path.toString().equals("Liste des abonnés" ))
  21.    {
  22.      gui.jPanelFenetres.removeAll();
  23.      gui.jPanelFenetres.add(pnlListAbonnés,null);
  24.      gui.jPanelFenetres.updateUI();
  25.    }
  26. }
  27.   }

Reply

Marsh Posté le 15-09-2005 à 11:42:00    

Ce panel jPanelFenetres, c'est un panel a coté de ton JTree ? C'est le panel qui contient le JTree ? Ton Panel a un Layout ?


Message édité par jogrey le 15-09-2005 à 11:47:55
Reply

Marsh Posté le 16-09-2005 à 09:52:02    

oui c'est le panel à coté du jtree, celui ou tous les panels vont s'ajouter. Il est en flowlayout

Reply

Marsh Posté le 19-09-2005 à 10:00:27    

je créer comme ca mon jtree c'est ptet ca qui est faux ?

Code :
  1. private void createNodes(DefaultMutableTreeNode racine)
  2. {
  3.   DefaultMutableTreeNode category = null;
  4.   DefaultMutableTreeNode sousCat = null;
  5.   category = new DefaultMutableTreeNode("Abonné" );
  6.   racine.add(category);
  7.   sousCat = new DefaultMutableTreeNode(
  8.     ("Liste des abonnés"
  9.      ));
  10.   category.add(sousCat);
  11.   sousCat = new DefaultMutableTreeNode(
  12.     ("Ajouter un abonné"
  13.      ));
  14.   category.add(sousCat);
  15.   category = new DefaultMutableTreeNode("Abonnement" );
  16.   racine.add(category);
  17.   sousCat = new DefaultMutableTreeNode(
  18.     ("Ajouter un abonnement"
  19.      ));
  20.   category.add(sousCat);
  21.   category = new DefaultMutableTreeNode("recette" );
  22.   racine.add(category);
  23. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed