Modifier dynamiquement l'icône de nœuds spécifiques JTree
J'ai vu beaucoup d'exemples pour la modification de l'icône de nœuds au cours de l'arbre d'instanciation, mais je voudrais un moyen de modifier dynamiquement l'icône d'un nœud particulier plus tard. Donc, dans mon code principal-je ajouter à mon habitude moteur de rendu de mon arbre:
//Icon I want to set nodes to later
ImageIcon checkIcon = new ImageIcon("check.jpg");
//Creates tree with my nodes
JTree tree = new JTree(nodes.top);
//Create custom renderer
Scenario1Renderer renderer = new Scenario1Renderer();
//Set to single tree selection
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
//Set tree to my custom renderer
//renderer.setRendererIcon(greenIcon);
tree.setCellRenderer(renderer);
Mon code dans le moteur de rendu est
public class Scenario1Renderer extends DefaultTreeCellRenderer {
ImageIcon rendererIcon;
public void setRendererIcon(ImageIcon myIcon){
this.rendererIcon = myIcon;
};
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus)
{
Component ret = super.getTreeCellRendererComponent(tree, value,
selected, expanded, leaf, row, hasFocus);
//setIcon( rendererIcon ) ;
return ret;
}
Alors, évidemment, si j'ai mis mon rendererIcon, il va peindre tous mes nœuds avec l'icône j'ai passer au cours de l'arbre d'instanciation. J'ai, au contraire, veulent une sorte de méthode qui permet de définir l'icône d'un nœud particulier plus tard dans l'exécution de mon programme.
là, je ne vois aucune différence, ne pas comprendre, ce qui est la raison
"j'ai vu beaucoup d'exemples pour la modification de l'icône de nœuds au cours de l'arbre d'instanciation, mais je voudrais un moyen de modifier dynamiquement l'icône d'un nœud particulier plus tard" ajouter Ainsi que la capacité du moteur de rendu. Je ne vois pas comment c'est quelque chose de particulier. Je suis surpris de votre recherche ne s'est pas montré des exemples d'une "dynamique" de façon à rendre les cellules. Il devrait y avoir un grand nombre d'e.g.s qui montrent comment rendre les données différemment au moment de l'exécution et, selon le contenu.
"j'ai vu beaucoup d'exemples pour la modification de l'icône de nœuds au cours de l'arbre d'instanciation, mais je voudrais un moyen de modifier dynamiquement l'icône d'un nœud particulier plus tard" ajouter Ainsi que la capacité du moteur de rendu. Je ne vois pas comment c'est quelque chose de particulier. Je suis surpris de votre recherche ne s'est pas montré des exemples d'une "dynamique" de façon à rendre les cellules. Il devrait y avoir un grand nombre d'e.g.s qui montrent comment rendre les données différemment au moment de l'exécution et, selon le contenu.
OriginalL'auteur Matt | 2013-02-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir différentes icônes que vous pouvez régler selon les différentes conditions. Ci-dessous est un exemple simple qui change l'icône d'un nœud sélectionné:
+1 (tout à fait) un truc de base
Je ne pense pas que TreeUI prend en charge cette sortie de la boîte. si il en vaut la peine, vous auriez à étendre TreeUI. Jetez un oeil à
BasicTreeUI.paintExpandControl()
.Je vous remercie. Je vais regarder dans ce
Merci encore. J'ai maintenant une solution de travail à l'extérieur ce que vous avez dit. Si vous êtes intéressé, voir ici
OriginalL'auteur tenorsax