Pregunta

Cuando se utiliza un JTree, un "objeto de usuario" de un DefaultMutableTreeNode se puede ajustar. Esto puede ser de cualquier tipo, pero para que se muestre, se utiliza su valor toString(). Esto no es lo que necesito.

¿Cómo puedo cambiar la forma de visualización de un objeto de usuario?

NOTA:. Mi objeto de usuario tiene a ser algo diferente de un String sea capaz de mantener la correspondencia entre el árbol y los objetos de usuario

¿Fue útil?

Solución

No lo entiendo cuál es tu problema.

El DefaultMutableTreeNode utilizará el método toString en el objeto de usuario porque tiene sentido. Las cadenas necesidades JTree para dibujar objetos por lo que pide a su objeto rapresentation su cadena está bien.

Si realmente necesita para evitar llamar toString en el objeto que se va a necesitar una manera de proporcionar una serie de rapresentation de todos modos, pero tendrá que escribir su propio 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();
  }
}

Pero realmente no veo el punto de hacer esto .. Además puede intentar extender el DefaultMutableTreeNode por el método toString de primer orden, pero se necesita una referencia adicional a su objeto o algún downcasts será necesario.

Si realmente necesita una visualización diferente de una cadena que tendrá que escribir su propio rendido que implementa TableCellRenderer.

Otros consejos

toString Override () de su objeto de usuario o proporcionar un TreeCellRenderer , básica ejemplo

Otra alternativa si sólo se preocupan por los detalles para el objeto de usuario y no quieren molestarse con TreeCellRender: extender JTree y anulación convertValueToText con su propio código que crea una cadena descriptiva para ese objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top