question d'un débutant de chez débutant :
je tente de modifier les noeuds d'un jtree comme suit :
======================================================================
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
class fenetre extends JFrame implements TreeSelectionListener
{ private JTree nomTree;
private DefaultTreeModel modelTree;
private DefaultMutableTreeNode noeud,racine;
private Integer i;
public fenetre()
{ racine = new DefaultMutableTreeNode("Racine") ;
nomTree=new JTree();
for ( i=1;i<10;i++ )
{ racine.add( new DefaultMutableTreeNode( i ) ); }
modelTree = new DefaultTreeModel( racine );
nomTree.setModel( modelTree );
this.add( nomTree );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize( 500, 300 );
this.setVisible( true );
nomTree.addTreeSelectionListener( this );
}
public void valueChanged( TreeSelectionEvent e )
{ noeud =(DefaultMutableTreeNode)nomTree.getLastSelectedPathComponent();
if ( !noeud.isRoot() )
{
Integer s = new Integer(noeud.toString());
s++;
noeud = new DefaultMutableTreeNode( s );
// calcul ok, mais non affiché ==> faire un reload ?
modelTree.reload( noeud );
// "plante" mais uniquement si le ligne précédente
// noeud = new DefaultMutableTreeNode( s ); est exécuté
// si on la met en commentaire ça passe
}
}
}
public class minimum
{ public static void main( String[] args )
{ fenetre fen=new fenetre(); }
}
======================================================================
tout est là :
noeud = new DefaultMutableTreeNode( s );
modelTree.reload( noeud );
quelque chose m'échappe, j'ai beau lire et relire
ce que je trouve à propos de ce que je voudrais faire
je ne comprend pas comment le faire.
si vous pouviez m'aider, au moins m'aiguiller...
merci d'avance.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yliur
Le Mon, 7 Jun 2010 11:07:13 +0200 bof a écrit :
bonjour à toutes et à tous,
question d'un débutant de chez débutant : je tente de modifier les noeuds d'un jtree comme suit :
======================== ========================= ===================== import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; class fenetre extends JFrame implements TreeSelectionListener { private JTree nomTree; private DefaultTreeModel modelTree; private DefaultMutableTreeNode noeud,racine; private Integer i; public fenetre() { racine = new DefaultMutableTreeNode("Racine") ; nomTree=new JTree(); for ( i=1;i<10;i++ ) { racine.add( new DefaultMutableTreeNode( i ) ); } modelTree = new DefaultTreeModel( racine ); nomTree.setModel( modelTree ); this.add( nomTree ); this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); this.setSize( 500, 300 ); this.setVisible( true ); nomTree.addTreeSelectionListener( this ); } public void valueChanged( TreeSelectionEvent e ) { noeud =(DefaultMutableTreeNode)nomTree.getLastSelectedPathComponent(); if ( !noeud.isRoot() ) { Integer s = new Integer(noeud.toString()); s++; noeud = new DefaultMutableTreeNode( s ); // calcul ok, mais non affiché ==> faire un reload ? modelTree.reload( noeud ); // "plante" mais uniquement si le ligne précédente // noeud = new DefaultMutableTreeNode( s ); est exécuté // si on la met en commentaire ça passe } } } public class minimum { public static void main( String[] args ) { fenetre fen=new fenetre(); } } ======================== ========================= =====================
tout est là : noeud = new DefaultMutableTreeNode( s ); modelTree.reload( noeud ); quelque chose m'échappe, j'ai beau lire et relire ce que je trouve à propos de ce que je voudrais faire je ne comprend pas comment le faire. si vous pouviez m'aider, au moins m'aiguiller... merci d'avance.
Hum... pourrais-tu décrire précisément ce que tu veux faire ?
Le Mon, 7 Jun 2010 11:07:13 +0200
bof <x@Tiscali.fr.invalid> a écrit :
bonjour à toutes et à tous,
question d'un débutant de chez débutant :
je tente de modifier les noeuds d'un jtree comme suit :
======================== ========================= =====================
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
class fenetre extends JFrame implements TreeSelectionListener
{ private JTree nomTree;
private DefaultTreeModel modelTree;
private DefaultMutableTreeNode noeud,racine;
private Integer i;
public fenetre()
{ racine = new DefaultMutableTreeNode("Racine") ;
nomTree=new JTree();
for ( i=1;i<10;i++ )
{ racine.add( new
DefaultMutableTreeNode( i ) ); } modelTree = new
DefaultTreeModel( racine ); nomTree.setModel( modelTree );
this.add( nomTree );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize( 500, 300 );
this.setVisible( true );
nomTree.addTreeSelectionListener( this );
}
public void valueChanged( TreeSelectionEvent e )
{ noeud
=(DefaultMutableTreeNode)nomTree.getLastSelectedPathComponent(); if
( !noeud.isRoot() ) {
Integer s = new Integer(noeud.toString());
s++;
noeud = new DefaultMutableTreeNode( s );
// calcul ok, mais non affiché ==> faire un reload ?
modelTree.reload( noeud );
// "plante" mais uniquement si le ligne précédente
// noeud = new DefaultMutableTreeNode( s ); est exécuté
// si on la met en commentaire ça passe
}
}
}
public class minimum
{ public static void main( String[] args )
{ fenetre fen=new fenetre(); }
}
======================== ========================= =====================
tout est là :
noeud = new DefaultMutableTreeNode( s );
modelTree.reload( noeud );
quelque chose m'échappe, j'ai beau lire et relire
ce que je trouve à propos de ce que je voudrais faire
je ne comprend pas comment le faire.
si vous pouviez m'aider, au moins m'aiguiller...
merci d'avance.
Hum... pourrais-tu décrire précisément ce que tu veux faire ?
question d'un débutant de chez débutant : je tente de modifier les noeuds d'un jtree comme suit :
======================== ========================= ===================== import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; class fenetre extends JFrame implements TreeSelectionListener { private JTree nomTree; private DefaultTreeModel modelTree; private DefaultMutableTreeNode noeud,racine; private Integer i; public fenetre() { racine = new DefaultMutableTreeNode("Racine") ; nomTree=new JTree(); for ( i=1;i<10;i++ ) { racine.add( new DefaultMutableTreeNode( i ) ); } modelTree = new DefaultTreeModel( racine ); nomTree.setModel( modelTree ); this.add( nomTree ); this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); this.setSize( 500, 300 ); this.setVisible( true ); nomTree.addTreeSelectionListener( this ); } public void valueChanged( TreeSelectionEvent e ) { noeud =(DefaultMutableTreeNode)nomTree.getLastSelectedPathComponent(); if ( !noeud.isRoot() ) { Integer s = new Integer(noeud.toString()); s++; noeud = new DefaultMutableTreeNode( s ); // calcul ok, mais non affiché ==> faire un reload ? modelTree.reload( noeud ); // "plante" mais uniquement si le ligne précédente // noeud = new DefaultMutableTreeNode( s ); est exécuté // si on la met en commentaire ça passe } } } public class minimum { public static void main( String[] args ) { fenetre fen=new fenetre(); } } ======================== ========================= =====================
tout est là : noeud = new DefaultMutableTreeNode( s ); modelTree.reload( noeud ); quelque chose m'échappe, j'ai beau lire et relire ce que je trouve à propos de ce que je voudrais faire je ne comprend pas comment le faire. si vous pouviez m'aider, au moins m'aiguiller... merci d'avance.
Hum... pourrais-tu décrire précisément ce que tu veux faire ?
bof
Hum... pourrais-tu décrire précisément ce que tu veux faire ?
modifier ce qui est affiché dans les noeuds. l'exemple mis n'est qu'une simplification de ce que je voudrais faire : en gros sur chaque noeud il y a u compteur que je dois incrémenter/décrémenter.
merci de ton intervention.
Hum... pourrais-tu décrire précisément ce que tu veux faire ?
modifier ce qui est affiché dans les noeuds.
l'exemple mis n'est qu'une simplification
de ce que je voudrais faire : en gros sur
chaque noeud il y a u compteur que je dois
incrémenter/décrémenter.
Hum... pourrais-tu décrire précisément ce que tu veux faire ?
modifier ce qui est affiché dans les noeuds. l'exemple mis n'est qu'une simplification de ce que je voudrais faire : en gros sur chaque noeud il y a u compteur que je dois incrémenter/décrémenter.
merci de ton intervention.
Yliur
Le Mon, 7 Jun 2010 14:35:57 +0200 bof a écrit :
> Hum... pourrais-tu décrire précisément ce que tu veux faire ?
modifier ce qui est affiché dans les noeuds. l'exemple mis n'est qu'une simplification de ce que je voudrais faire : en gros sur chaque noeud il y a u compteur que je dois incrémenter/décrémenter.
merci de ton intervention.
A mon avis tu ne dois pas recréer le noeud (noeud = new ...). Tu devrais plutôt modifier le contenu du noeud (sa valeur).
Et ça me paraît normal que reload fasse la tête quand tu lui demande de recharger un noeud que tu viens de créer, parce que ce noeud ne se trouve pas dans l'arbre (contrairement au cas où tu ne fais pas le new).
Le Mon, 7 Jun 2010 14:35:57 +0200
bof <x@Tiscali.fr.invalid> a écrit :
> Hum... pourrais-tu décrire précisément ce que tu veux faire ?
modifier ce qui est affiché dans les noeuds.
l'exemple mis n'est qu'une simplification
de ce que je voudrais faire : en gros sur
chaque noeud il y a u compteur que je dois
incrémenter/décrémenter.
merci de ton intervention.
A mon avis tu ne dois pas recréer le noeud (noeud = new ...).
Tu devrais plutôt modifier le contenu du noeud (sa valeur).
Et ça me paraît normal que reload fasse la tête quand tu lui demande de
recharger un noeud que tu viens de créer, parce que ce noeud ne se
trouve pas dans l'arbre (contrairement au cas où tu ne fais pas le new).
> Hum... pourrais-tu décrire précisément ce que tu veux faire ?
modifier ce qui est affiché dans les noeuds. l'exemple mis n'est qu'une simplification de ce que je voudrais faire : en gros sur chaque noeud il y a u compteur que je dois incrémenter/décrémenter.
merci de ton intervention.
A mon avis tu ne dois pas recréer le noeud (noeud = new ...). Tu devrais plutôt modifier le contenu du noeud (sa valeur).
Et ça me paraît normal que reload fasse la tête quand tu lui demande de recharger un noeud que tu viens de créer, parce que ce noeud ne se trouve pas dans l'arbre (contrairement au cas où tu ne fais pas le new).
Yliur
Le Mon, 7 Jun 2010 19:40:04 +0200 Yliur a écrit :
Le Mon, 7 Jun 2010 14:35:57 +0200 bof a écrit :
> > Hum... pourrais-tu décrire précisément ce que tu veux faire ? > > modifier ce qui est affiché dans les noeuds. > l'exemple mis n'est qu'une simplification > de ce que je voudrais faire : en gros sur > chaque noeud il y a u compteur que je dois > incrémenter/décrémenter. > > merci de ton intervention.
A mon avis tu ne dois pas recréer le noeud (noeud = new ...). Tu devrais plutôt modifier le contenu du noeud (sa valeur).
Et ça me paraît normal que reload fasse la tête quand tu lui demande de recharger un noeud que tu viens de créer, parce que ce noeud ne se trouve pas dans l'arbre (contrairement au cas où tu ne fais pas le new).
noeud.setUserObject (...) ?
Le Mon, 7 Jun 2010 19:40:04 +0200
Yliur <yliur@free.fr> a écrit :
Le Mon, 7 Jun 2010 14:35:57 +0200
bof <x@Tiscali.fr.invalid> a écrit :
> > Hum... pourrais-tu décrire précisément ce que tu veux faire ?
>
> modifier ce qui est affiché dans les noeuds.
> l'exemple mis n'est qu'une simplification
> de ce que je voudrais faire : en gros sur
> chaque noeud il y a u compteur que je dois
> incrémenter/décrémenter.
>
> merci de ton intervention.
A mon avis tu ne dois pas recréer le noeud (noeud = new ...).
Tu devrais plutôt modifier le contenu du noeud (sa valeur).
Et ça me paraît normal que reload fasse la tête quand tu lui demande
de recharger un noeud que tu viens de créer, parce que ce noeud ne se
trouve pas dans l'arbre (contrairement au cas où tu ne fais pas le
new).
> > Hum... pourrais-tu décrire précisément ce que tu veux faire ? > > modifier ce qui est affiché dans les noeuds. > l'exemple mis n'est qu'une simplification > de ce que je voudrais faire : en gros sur > chaque noeud il y a u compteur que je dois > incrémenter/décrémenter. > > merci de ton intervention.
A mon avis tu ne dois pas recréer le noeud (noeud = new ...). Tu devrais plutôt modifier le contenu du noeud (sa valeur).
Et ça me paraît normal que reload fasse la tête quand tu lui demande de recharger un noeud que tu viens de créer, parce que ce noeud ne se trouve pas dans l'arbre (contrairement au cas où tu ne fais pas le new).
noeud.setUserObject (...) ?
bof
noeud.setUserObject (...) ?
désolé du temps de réponse, je ne suis pas aussi disponible que je le souhaiterais.
effectivement, avec Integer s = new Integer(noeud.toString()); s++; noeud.setUserObject(s); ça baigne beuacoup mieux. il reste à modifier la taille de l'affichage, car, dans l'exemple, passer de 9 à 10 affiche "..."
presque nickel.
noeud.setUserObject (...) ?
désolé du temps de réponse,
je ne suis pas aussi disponible que je le souhaiterais.
effectivement, avec
Integer s = new Integer(noeud.toString());
s++;
noeud.setUserObject(s);
ça baigne beuacoup mieux.
il reste à modifier la taille de l'affichage, car,
dans l'exemple, passer de 9 à 10 affiche "..."
désolé du temps de réponse, je ne suis pas aussi disponible que je le souhaiterais.
effectivement, avec Integer s = new Integer(noeud.toString()); s++; noeud.setUserObject(s); ça baigne beuacoup mieux. il reste à modifier la taille de l'affichage, car, dans l'exemple, passer de 9 à 10 affiche "..."
presque nickel.
bof
il reste à modifier la taille de l'affichage, car, dans l'exemple, passer de 9 à 10 affiche "..."
je ne sais pas si c'est ce qu'il y a de "mieux" à faire, mais avec modelTree.reload(noeud); bah.. c'est ok. merci Yliur.
il reste à modifier la taille de l'affichage, car,
dans l'exemple, passer de 9 à 10 affiche "..."
je ne sais pas si c'est ce qu'il
y a de "mieux" à faire, mais avec
modelTree.reload(noeud);
bah.. c'est ok.
merci Yliur.
il reste à modifier la taille de l'affichage, car, dans l'exemple, passer de 9 à 10 affiche "..."
je ne sais pas si c'est ce qu'il y a de "mieux" à faire, mais avec modelTree.reload(noeud); bah.. c'est ok. merci Yliur.
Yliur
Le Tue, 8 Jun 2010 08:42:03 +0200 bof a écrit :
> noeud.setUserObject (...) ?
désolé du temps de réponse, je ne suis pas aussi disponible que je le souhaiterais.
effectivement, avec Integer s = new Integer(noeud.toString()); s++; noeud.setUserObject(s); ça baigne beuacoup mieux. il reste à modifier la taille de l'affichage, car, dans l'exemple, passer de 9 à 10 affiche "..."
presque nickel.
Si vous mettez un entier dans le noeud, vous devez pouvoir le récupérer par Integer s = (Integer) noeud.getUserObject() ;
C'est ce nombre que vous voulez manipuler, pas sa représentation sous forme de chaîne (ce qui est renvoyé par toString()).
Le Tue, 8 Jun 2010 08:42:03 +0200
bof <x@Tiscali.fr.invalid> a écrit :
> noeud.setUserObject (...) ?
désolé du temps de réponse,
je ne suis pas aussi disponible que je le souhaiterais.
effectivement, avec
Integer s = new Integer(noeud.toString());
s++;
noeud.setUserObject(s);
ça baigne beuacoup mieux.
il reste à modifier la taille de l'affichage, car,
dans l'exemple, passer de 9 à 10 affiche "..."
presque nickel.
Si vous mettez un entier dans le noeud, vous devez pouvoir le récupérer
par Integer s = (Integer) noeud.getUserObject() ;
C'est ce nombre que vous voulez manipuler, pas sa représentation sous
forme de chaîne (ce qui est renvoyé par toString()).
désolé du temps de réponse, je ne suis pas aussi disponible que je le souhaiterais.
effectivement, avec Integer s = new Integer(noeud.toString()); s++; noeud.setUserObject(s); ça baigne beuacoup mieux. il reste à modifier la taille de l'affichage, car, dans l'exemple, passer de 9 à 10 affiche "..."
presque nickel.
Si vous mettez un entier dans le noeud, vous devez pouvoir le récupérer par Integer s = (Integer) noeud.getUserObject() ;
C'est ce nombre que vous voulez manipuler, pas sa représentation sous forme de chaîne (ce qui est renvoyé par toString()).