Arbres et évènements en Java

Résolu
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 18 juil. 2007 à 09:58
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 18 juil. 2007 à 14:11
Salut à tous , je m'excuse de vous déranger mais j'aimerais savoir est-ce qu'il est possible de changer directement le nom d'un arbre grace a un clique??


 


Merci d'avance.

9 réponses

amundain Messages postés 110 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 28 août 2012 1
18 juil. 2007 à 13:44
Salut,

A la fin de ta méthode actionPerformed, après le "top.add(coucou)";" tu peux ajouter la ligne : "SwingUtilities.updateComponentTreeUI(this);".
L'interface est alors rafraichie ;-)

A +,

amundain


<hr size="2" width="100%" />Java bien,merci.
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 juil. 2007 à 10:11
Ben tu colle un post-it sur l'arbre pour lui donner un nom...

Non sans blague, c'est quoi un arbre pour toi ? Et surtout, c'est quoi le nom d'un arbre pour toi ???

Tu parle d'un JTree ?
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
18 juil. 2007 à 10:16
Hello,oui c 'est par rapport à un JTree ici dans mon programme je n'arrive pas à rajouter un nouvel element dans mon arbre,voici mon code tu comprendras mieux:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
/* PROGRAMME PAGE 846 DU LIVRE */

public class JTreeEvents extends JApplet implements ActionListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
JTree tree;
JTextField jtf;
CardLayout Carte;
JPanel panneauDroite;
static JTextField nom,prenom,datedenaissance,loisirs,langagesinfos,age;
static JButton ok,nouveau;
static JButton nouvellephase2;
DefaultMutableTreeNode top;

public void init()
{

nouveau = new JButton("Nouveau");
nouveau.addActionListener(this);

ok = new JButton("OK");
ok.addActionListener(this);

nouvellephase2 = new JButton("Nouvelle Phase 2");
nouvellephase2.addActionListener(this);

nom = new JTextField(10);
nom.addActionListener(this);

prenom = new JTextField(10);
prenom.addActionListener(this);

datedenaissance = new JTextField(10);
datedenaissance.addActionListener(this);

loisirs = new JTextField(10);
loisirs.addActionListener(this);

langagesinfos = new JTextField(10);
langagesinfos.addActionListener(this);

age = new JTextField(10);
age.addActionListener(this);

Container contentPane = this.getContentPane();

JPanel panneau = new JPanel(new BorderLayout());
panneauDroite = new JPanel();

JPanel Phase1 = new JPanel();
Phase1.add(new JLabel("Nom"));
Phase1.add(nom);
Phase1.add(new JLabel("Prenom"));
Phase1.add(prenom);
Phase1.add(new JLabel("Date de Naissance"));
Phase1.add(datedenaissance);
Phase1.add(ok);
Phase1.add(nouveau);

JPanel Phase2 = new JPanel();
Phase2.add(new JLabel("Loisirs"));
Phase2.add(loisirs);
Phase2.add(new JLabel("Langages infos"));
Phase2.add(langagesinfos);
Phase2.add(new JLabel("Age"));
Phase2.add(age);
Phase2.add(nouvellephase2);


Carte = new CardLayout();

panneauDroite.setLayout(Carte);
panneauDroite.add("Phase1",Phase1);
panneauDroite.add("Phase2",Phase2);

contentPane.add(panneau);
JPanel panneauTree = new JPanel(new BorderLayout());

JSplitPane unSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panneauTree,panneauDroite);
panneau.add(unSplitPane);

top = new DefaultMutableTreeNode("Options");

DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
top.add(a);

DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("A1");
a.add(a1);

DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("A2");
a.add(a2);

DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
top.add(b);

DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("B1");
b.add(b1);

DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("B2");
b.add(b2);

tree = new JTree(top);

int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(tree,v,h);

panneauTree.add(jsp, BorderLayout.CENTER);

jtf = new JTextField("",20);
panneauTree.add(jtf,BorderLayout.SOUTH);

tree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
doMouseClicked(me);
}
});
}

void doMouseClicked(MouseEvent me)
{
TreePath tp = tree.getPathForLocation(me.getX(), me.getY());

if (tp != null)
{

Object[] mytp = tp.getPath();

if (mytp.length == 3)
{
jtf.setText(mytp[2].toString());
Carte.show(panneauDroite,"Phase2");
}
else if (mytp.length == 2)
{
jtf.setText(mytp[1].toString());
Carte.show(panneauDroite,"Phase1");
}
}

}

public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == nouveau)
{
DefaultMutableTreeNode coucou = new DefaultMutableTreeNode("Nouveau");
top.add(coucou);

}
}
}
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
18 juil. 2007 à 10:38
Voila ou se situe mon probleme:

public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == nouveau)
{
DefaultMutableTreeNode coucou = new DefaultMutableTreeNode("Nouveau");
top.add(coucou);

}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
18 juil. 2007 à 12:14
la reponce de base à : est il possible en java..??  est toujours OUI ....  ;o) maintenant posez donc des questions plus precises... ;o)

et en fait on ne voi toujours pas le probleme ;o) puis que la clairement tout ce que tu fais c est de vouloir ajouter un node à ton jtree ... ;o)  !!!

GodConan ;o)
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
18 juil. 2007 à 12:20
Si tu execute ce programme tu remarqueras qu'il n'apparait pas de nouvelle branche .

J'aimerai ajouter des branches à chaque fois que je clique sur "nouveau"
Apparemment ca ne marche pas

Merci d'avance
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
18 juil. 2007 à 12:45
tu ne fait que modifier le model de donnée....
il faut évidement demander au rendu de se mettre à jour ... ;o) je ne me souvien plus de la methode exacte....

tu dois te souvenir que tout les swings fonctionne ainsi.... souvent un repaint() sufit mais pas ici me semble t il...
GodConan ;o)
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
18 juil. 2007 à 13:39
Tutorial sun sur les jtree
http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

regardes notamment : dynamically changing a tree

il faut entre autre définir un TreeModelListener pour voir les effets des changements sur l'arbre.
0
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009
18 juil. 2007 à 14:11
Re Salut a tous, en rajoutant ""SwingUtilities.updateComponentTreeUI(this);". Mon interfae peut me permettre de créer des sous-dossiers alors que j'aimerais qu'il crée un nouveau dossier du style "A"  ou "B".

Merci en tous les cas à tous d'avoir repondu.

AlexN : j'ai cet exemple en face de moi depuis 10h du matin et j'essaie de l'appliquer mais je n'arrive pas à caser mon TreeModelListener.  :(




 


 
0
Rejoignez-nous