Question

Lorsque vous utilisez un JTree, un « objet utilisateur » d'un DefaultMutableTreeNode peut être réglée. Cela peut être de toute nature, mais pour l'afficher, sa valeur toString() est utilisée. Ce n'est pas ce que je dois.

Comment puis-je changer le mode d'affichage d'un objet utilisateur?

NOTE:. Mon objet utilisateur a pour quelque chose de différent qu'un String pour être en mesure de maintenir le mappage entre l'arbre et les objets utilisateur

Était-ce utile?

La solution

Je ne comprends pas quel est votre problème.

Le DefaultMutableTreeNode utilisera la méthode toString sur l'objet utilisateur, car il est logique. Le JTree a besoin de chaînes pour dessiner des objets à votre demande si l'objet de sa chaîne rapresentation est ok.

Si vous avez vraiment besoin pour éviter d'appeler toString sur votre objet, vous aurez besoin d'un moyen de fournir une rapresentation chaîne de toute façon, mais vous devrez écrire votre propre MutableTreeNode:

class MyTreeNode implements MutableTreeNode
{
  UserObject yourObject;

  MyTreeNode(UserObject yourObject)
  {
    this.yourObject = yourObject;
  }

  // implement all needed methods to handle children and so on

  public String toString()
  {
    // then you can avoid using toString
    return yourObject.sringRapresentation();
  }
}

Mais je ne vois vraiment pas le point de le faire .. En outre, vous pouvez étendre la DefaultMutableTreeNode en remplaçant la méthode de toString, mais vous aurez besoin d'une référence supplémentaire à votre objet ou d'un downcasts sera nécessaire.

Si vous avez vraiment besoin d'une visualisation différente de celle d'une chaîne que vous devrez écrire votre propre rendu qui implémente TableCellRenderer.

Autres conseils

Remplacer toString () sur votre objet utilisateur ou fournir un TreeCellRenderer , exemple de base

Une autre alternative si vous tenez à peu près le texte affiché pour l'objet utilisateur et ne voulez pas vous embêter avec TreeCellRender: étendre DTree et remplacer convertValueToText avec votre propre code qui crée une chaîne descriptive pour cet objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top