Domanda

Quando si utilizza una JTree, un "oggetto utente" di un DefaultMutableTreeNode può essere impostato. Questo può essere di qualsiasi tipo, ma per visualizzarlo, viene utilizzato il valore toString(). Questo non è quello che mi serve.

Come faccio a cambiare il modo in cui viene visualizzato un oggetto utente?

. NOTA: Il mio oggetto utente ha di essere qualcosa di diverso da un String per essere in grado di mantenere la corrispondenza tra l'albero e gli oggetti utente

È stato utile?

Soluzione

Non capisco qual è il tuo problema.

Il DefaultMutableTreeNode utilizzerà il metodo toString sull'oggetto utente perché ha senso. Le stringhe bisogni JTree per disegnare oggetti in modo chiedere al vostro oggetto la sua rappresentazione stringa è ok.

Se si ha realmente bisogno per evitare di chiamare toString sul vostro oggetto avrete bisogno di un modo per fornire una rappresentazione stringa di esso in ogni caso, ma si dovrà scrivere il proprio 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();
  }
}

Ma io davvero non vedo il punto di fare questo .. in aggiunta si può provare a estendere il DefaultMutableTreeNode con il metodo toString l'override, ma è necessario un ulteriore riferimento al vostro oggetto o un po 'di downcasts saranno necessarie.

Se si ha realmente bisogno di una visualizzazione diversa da una stringa si dovrà scrivere il proprio reso che implementa TableCellRenderer.

Altri suggerimenti

Override toString () sul vostro oggetto utente o fornire un TreeCellRenderer , esempio di base

Un'altra alternativa se si preoccupa per il testo mostrato per l'oggetto utente e non vogliono perdere tempo con TreeCellRender: estendere JTree e di override convertValueToText con il tuo proprio codice che crea una stringa descrittiva per quell'oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top