Un JTable dans un JTree = non scrollable ??

dugros Messages postés 6 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004 - 2 juil. 2004 à 15:55
cerec59 Messages postés 26 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juillet 2005 - 7 juin 2005 à 09:15
Salut !
j'ai construit un arbre qui m'affiche toutes sortes d'informations, dont un JTable.

J'ai besoin d'un JScrollPane pour naviguer dans ce tableau qui a une taille fixe. et j'ai besoin de faire des selections dedans.

Mon problème c'est que le rendu me donne une image de mon tableau & jscrollpane, je ne peux naviguer dans mon tableau. Je pensais qu'en castant le rendu serait capable de le gerer comme un objet de type scrollpane ???

Voici le code :
(D'ailleurs si quelqu'un à une manière plus élégante de gérer le rendu ca serait utile !)

//j'ajoute mon jscrollpane possédant mon tableau
childNode = new DefaultMutableTreeNode(monJScrollPane, true);
...

//Le rendu de mon JTree
public class KTreeRender extends DefaultTreeCellRenderer {

public Component getTreeCellRendererComponent(JTree tree,Object value,boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus) {
super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);

DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode) value;
if ( dmtcr.getUserObject().getClass().getName().equals("javax.swing.JScrollPane") ) {
return (JScrollPane) dmtcr.getUserObject();

}
else {//Else we display it as a string (use the toString)

return this;
}

}

}

Merciii
A voir également:

8 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
2 juil. 2004 à 17:46
GodConan :clown)

pouwaa qu el horro une JTable ds un JTree : c est pas tres lisible n y meme ergonomic ton truc : j te conseil d essayer de faire autrement. Y a pas mal de solution pour eviter de faire ca.. ;o)

++
0
dugros Messages postés 6 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
2 juil. 2004 à 18:11
Je dois suivre une spec... Et ca répond à un besoin qui est à pour resultat d'être simple à utilisation et... pratique !

Ca doit surement être faisable. Mon problème c'est le scrollpane, l'affichage du tableau en entier ne me pose pas de pb...

merci pour ta réponse, mais si quelqu'un à une solution merci !
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
2 juil. 2004 à 18:19
GodConan :clown)

pourkoi tu crer pas plutto ta propre class deriver d un JPanel (pour faire simple) ds le quel tu range ton JScrol et ta table

ensuite ds ton renderer ta plus qu a renvoyer ta class

autrement le bon test pour savoir a koi t a affaire c :
if ( truc instanceOf NomDeClass )
(NomDeClass)truc;

;o)

++
0
dugros Messages postés 6 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
2 juil. 2004 à 19:24
J'ai essayé de faire :
creer mon tableau
creer un panel
ajouter un jscrollpane au tableau
ajouter le jscrollpane au panel

Le noeud prend comme argument le panel.
Dans le rendu je retourne un panel.

Et la mon rendu est... une image... le jscroll n'est pas actif et je clique desormais sur un jtree et non sur un tableau...

Je ne voit pas comment specifier le rendu de mon jscrollpane.

public Component getTreeCellRendererComponent(JTree tree,Object value,boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus) {

super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode) value;

if ( dmtcr.getUserObject() instanceof JPanel) {

JPanel jp = (JPanel) dmtcr.getUserObject();
return jp;
}
...
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
2 juil. 2004 à 23:21
GodConan :clown)

no pas ca je t di de faire
fo pas faire des JPanel
mes des TonPanel qui herite d un panel
et ds le constructeur de ToPanel tu met tou les component don tu a besoin....

++
0
dugros Messages postés 6 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
5 juil. 2004 à 09:43
J'ai fait ma propre class extends JPanel et qui contient un JScrollPane et.. pareil au final c'est une image qui ne recoit plus mes actions...

J'ai besoin d'un JTextArea aussi, j'ai fait le meme test et meme problème !

HELP !!
0
dugros Messages postés 6 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
6 juil. 2004 à 15:22
J'ai trouvé la solution, il faut rendre le tree editable (tree.setEditable(true);
) et ajouter un treeeditor (tree.setCellEditor(new MonTreeEditor());) pour que le panel recoive l'action.

La classe MonTreeEditor implement un treecelleeditor

public class MonTreeEditor implements TreeCellEditor {

DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)value;

if ( dmtn.getUserObject() instanceof JPanel ) {
JPanel jp = (JPanel) dmtn.getUserObject();
return jp;
}
else if ( dmtn.getUserObject() instanceof java.lang.String) {
String lab = (String) dmtn.getUserObject();
return new JLabel(lab);//TODO need to do in a better way that create a new JLabel
}
else {
return null;//never used
}

public boolean isCellEditable(EventObject evt) {
if (evt instanceof MouseEvent) {
if (((MouseEvent) evt).getClickCount() == 1) {
return true;
}
}
else return false;
}

//... other fonctions... to implement

}

Le "create new Jpanel" est bof, mais je vois pas comment faire, lorsque je passe un String à mon noeud lors de la creation, celui ci deviens un JPanel... Si quelqu'un à une meilleur solution...

a+
0
cerec59 Messages postés 26 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 4 juillet 2005
7 juin 2005 à 09:15
Salut

pour ton probleme avec le scroll de ton jtable, va voir sur le site de sun et recherche le code pour le JTreeTable. c'est ce que tu as réalisé et y'a pas de soucis pour les scroll.
Ca utilise plusieurs classes:

FileSystemModel: c le modele pour ton tableau et
dans le constructeur que tu peux modifier le repertoire à lister
a+ et bon courage pour comprendre le code
0
Rejoignez-nous