Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2727 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  JTREE utilisation de JTree.AccessibleJTree et de setVisible

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

JTREE utilisation de JTree.AccessibleJTree et de setVisible

n°972820
castrogne
Posté le 05-02-2005 à 15:52:49  profilanswer
 

:jap: Salut! :jap:  
 
Je cherche actuellement à rendre invisible une partie de l'arbre. (Un peu comme si on déroulait une branche, sauf que là ce serait pour "effacer" plusieurs branche, ou seulement une partie de la branche, certaines feuilles koi)  
 
 
J'ai trouvé que les JComponent.AccessibleJComponent ont une fonction setVisible(boolean b). Et qu'on peut les utiliser dans les JTree.AccessibleJTree . Sauf que je sait pas faire :heink: , et que je ne trouve pas d'exemple :sweat: ... Quelqu'un peut m'aider, ou me dire ou trouver de la doc un peu mieux que les simples API? (j'aime les exemples :p)  
 
Merci beaucoup!!! :bounce:  :bounce:

mood
Publicité
Posté le 05-02-2005 à 15:52:49  profilanswer
 

n°972848
EpoK
Let's burn
Posté le 05-02-2005 à 16:56:12  profilanswer
 
n°972862
castrogne
Posté le 05-02-2005 à 17:32:23  profilanswer
 

merci pour ce joli site, je connaissai pas effectivement, et il explique pas mal de chose. Cependant, il répond pas à ma question, enfin j'ai pas trouvé:
 
Comment rendre une feuille invisible? (par exemple) je veux pas vraiment l'effacer, je veux juste la rendre visible ou non...
 
Merci!

n°972892
nraynaud
lol
Posté le 05-02-2005 à 18:48:03  profilanswer
 

castrogne > tout ce qui est AccessibleBidule concerne les l'accessibilité pour les handicapés.
 
par contre, j'ai pas compris ton délire, tu veux replier les branche ou dessiner un rectangle blanc à la place ?


---------------
trainoo.com, c'est fini
n°972956
castrogne
Posté le 05-02-2005 à 20:26:41  profilanswer
 

Non, je m'explique:
 
je reprends un projet, qui s'avère assez complexe. Sauf qu'en le prenant, moi je connaissait rien aux jtree... Il s'agit d'un arbre de données d'un certain type (une classe définie au préalable). Ces données sont représentées dans un jtree, et chaque noeud correspond à une instance de cette classe (et pas du tout à un defaultmutabletreenode).  
 
Ce que j'aimerai, c'est que certains de ces éléments n'apparaissent pas dans l'arbre. Mais comme c'est fait pour le moment, ils sont inséparables! Donc je veux "tout simplement" en rendre une partie invisible. Non pas replié, mais vraiment invisible. Si j'ai bien tout compris, ça doit se passer dans le treeModel, ça doit être par là que je dois dire ce qui apparait ou non, mais j'arrive pas à comprendre comment on fait un treeModel. Voilà, j'espère que tu as compris...
 
En tout caas merci de m'aider, ça fait pas mal de jour que je m'arrache les cheveux là dessus...

n°972970
EpoK
Let's burn
Posté le 05-02-2005 à 21:33:47  profilanswer
 

si tu veux pas qu'ils soient dans le jtree il faut les enlever de ta hiérarchie


Message édité par EpoK le 05-02-2005 à 21:34:13
n°973071
castrogne
Posté le 06-02-2005 à 03:10:36  profilanswer
 

Mouai, les enlever de la hierarchie reviendrait justement à les effacer totalement... C'est justement ce que je veux éviter. Dans mon cas, l'arbre a été fait de façon à ce que chaque noeud et feuille soit une implémentation d'un objet (appelé DataComposite, mais bon, ca aurait pu être toto), et je ne veux pas les effacer, je veux juste que ça apparaisse plus.
 
Enfin bref, si vous connaissez une bonne doc (autre qu'une API svp...) sur les treeModels, ce serait cool. (treeModels, et cellrenderers peut être aussi) Comme ça, peut être qu'en créant l'arbre à partir de mes composites, je pourait sélectionner ceux qui apparaissent ou pas...
 
Merci

n°973190
nraynaud
lol
Posté le 06-02-2005 à 13:03:46  profilanswer
 

castrogne > je te propose de faire un TreeNode spécifique qui va te faire disparaître ton truc.
 
Je reviens.

n°973265
nraynaud
lol
Posté le 06-02-2005 à 14:39:29  profilanswer
 

Code :
  1. /*
  2. * Created on 6 févr. 2005
  3. *
  4. * TODO To change the template for this generated file go to
  5. * Window - Preferences - Java - Code Style - Code Templates
  6. */
  7. package org.nraynaud.treewrapper;
  8. import java.awt.BorderLayout;
  9. import java.awt.event.ActionEvent;
  10. import java.util.Enumeration;
  11. import java.util.Vector;
  12. import javax.swing.AbstractAction;
  13. import javax.swing.JButton;
  14. import javax.swing.JFrame;
  15. import javax.swing.JPanel;
  16. import javax.swing.JSplitPane;
  17. import javax.swing.JTextArea;
  18. import javax.swing.JTree;
  19. import javax.swing.text.AbstractDocument;
  20. import javax.swing.text.Element;
  21. import javax.swing.tree.TreeModel;
  22. import javax.swing.tree.TreeNode;
  23. /**
  24. * @author nicolas
  25. *  
  26. * TODO To change the template for this generated type comment go to Window -
  27. * Preferences - Java - Code Style - Code Templates
  28. */
  29. public class TreeNodeWrapper implements TreeNode {
  30. private TreeNode realNode;
  31. private Vector wrappedChildren;
  32. private TreeNodeSelector selector;
  33. private TreeNodeWrapper parent;
  34. public TreeNodeWrapper(TreeNode realNode,
  35.   TreeNodeSelector selector) {
  36.  this(realNode, null, selector);
  37. }
  38. protected TreeNodeWrapper(TreeNode realNode, TreeNodeWrapper parent,
  39.   TreeNodeSelector selector) {
  40.  this.realNode = realNode;
  41.  this.selector = selector;
  42.  this.parent = parent;
  43. }
  44. public void reset() {
  45.  wrappedChildren = null;
  46. }
  47. public int getChildCount() {
  48.  return getWrappedChildren().size();
  49. }
  50. public boolean getAllowsChildren() {
  51.  return realNode.getAllowsChildren();
  52. }
  53. public boolean isLeaf() {
  54.  return realNode.isLeaf();
  55. }
  56. public Enumeration children() {
  57.  return getWrappedChildren().elements();
  58. }
  59. public TreeNode getParent() {
  60.  return parent;
  61. }
  62. public TreeNode getChildAt(int childIndex) {
  63.  return (TreeNode) getWrappedChildren().get(childIndex);
  64. }
  65. public int getIndex(TreeNode node) {
  66.  return getWrappedChildren().indexOf(node);
  67. }
  68. /**
  69.  * @return Returns the wrappedChildren.
  70.  */
  71. public Vector getWrappedChildren() {
  72.  if (wrappedChildren == null) {
  73.   wrappedChildren = new Vector();
  74.   for (Enumeration e = realNode.children(); e.hasMoreElements();) {
  75.    TreeNode realChild = (TreeNode) e.nextElement();
  76.    if (selector.select(realChild))
  77.     wrappedChildren.add(new TreeNodeWrapper(realChild, this,
  78.       selector));
  79.   }
  80.   wrappedChildren.trimToSize();
  81.  }
  82.  return wrappedChildren;
  83. }
  84. public String toString() {
  85.  return realNode.toString();
  86. }
  87. public interface TreeNodeSelector {
  88.  public boolean select(TreeNode node);
  89. }
  90. public static void main(String[] argv) {
  91.  JFrame frame = new JFrame("testage" );
  92.  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  93.  JTextArea area = new JTextArea();
  94.  TreeNode node = (AbstractDocument.AbstractElement) area.getDocument()
  95.    .getDefaultRootElement();
  96.  TreeNodeSelector selector = new TreeNodeSelector() {
  97.   public boolean select(TreeNode node) {
  98.    Element e = (AbstractDocument.AbstractElement) node;
  99.    return e.getEndOffset() - e.getStartOffset() != 1;
  100.   }
  101.  };
  102.  final JTree tree = new JTree(new TreeNodeWrapper(node, null, selector));
  103.  //final JTree tree = new JTree(node);
  104.  JPanel panel = new JPanel(new BorderLayout());
  105.  panel.add(tree, BorderLayout.CENTER);
  106.  panel.add(new JButton(new AbstractAction("refresh" ) {
  107.   public void actionPerformed(ActionEvent e) {
  108.    TreeModel model = tree.getModel();
  109.    ((TreeNodeWrapper)model.getRoot()).reset();
  110.    tree.setModel(null);
  111.    tree.setModel(model);
  112.   }
  113.  }), BorderLayout.SOUTH);
  114.  frame.getContentPane().add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panel, area));
  115.  frame.show();
  116. }
  117. }

n°973358
castrogne
Posté le 06-02-2005 à 17:27:49  profilanswer
 

Merci!
 
J'ai pas encore eu le temps de tester, mais à première vue y'a de bonnes idées. Tu as trouvé ça où? (tout seull? cooool)
 
Bon, je vous tiens au courant!
 
++

mood
Publicité
Posté le 06-02-2005 à 17:27:49  profilanswer
 

n°973398
nraynaud
lol
Posté le 06-02-2005 à 19:03:09  profilanswer
 

castrogne a écrit :

J'ai pas encore eu le temps de tester, mais à première vue y'a de bonnes idées. Tu as trouvé ça où? (tout seull? cooool)


[:mlc]

n°973418
machinbidu​le1974
Do you feel lucky, punk ?
Posté le 06-02-2005 à 19:19:35  profilanswer
 

Lol, continue comme ça t'as du potentiel nraynaud :D

n°973427
nraynaud
lol
Posté le 06-02-2005 à 19:29:34  profilanswer
 

machinbidule1974 > oué, là j'attaque les inner classes, mais c'est pas facile, j'vais faire un topic au lieu de lire la doc :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  JTREE utilisation de JTree.AccessibleJTree et de setVisible

 

Sujets relatifs
Probleme avec Target et utilisation des balises divUtilisation des relations ships et de JBoss (+EJB)
Utilisation de AS dans un SELECTUtilisation de control progress
utilisation d'un tabStripxsl:key pb utilisation d'une variable dans le match
[ansi] utilisation de types ou structures définis ailleurs ...[Java] Utilisation en multiprocesseur
Utilisation de Group ByUtilisation mémoire importante
Plus de sujets relatifs à : JTREE utilisation de JTree.AccessibleJTree et de setVisible


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR