Pergunta

Ao usar a JTree, um "objeto de usuário" de um DefaultMutableTreeNode Pode ser configurado. Isso pode ser de qualquer tipo, mas para exibi -lo, é toString() o valor é usado. Não é isso que eu preciso.

Como posso mudar a maneira como um objeto de usuário é exibido?

Nota: meu objeto de usuário tem ser algo diferente de um String

Foi útil?

Solução

Eu não entendo qual é o seu problema.

o DefaultMutableTreeNode usará o toString Método no objeto do usuário porque faz sentido. o JTree Precisa de strings para desenhar objetos, então pedir ao seu objeto que a RapResentation de String está OK.

Se você realmente precisa evitar ligar toString Em seu objeto, você precisará de uma maneira de fornecer uma apresentação de string de qualquer maneira, mas você terá que escrever seu próprio 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();
  }
}

Mas eu realmente não vejo o objetivo de fazer isso .. além disso, você pode tentar estender o DefaultMutableTreeNode substituindo toString método, mas você precisará de uma referência adicional ao seu objeto ou a alguns abatidos será preciso.

Se você realmente precisa de uma visualização diferente de uma string, terá que escrever sua própria renderização que implementa TableCellRenderer.

Outras dicas

Substituir o tostring () em seu objeto de usuário ou fornecer um TreeCellrenderer, exemplo básico

Outra alternativa se você se preocupa apenas com o texto mostrado para o objeto do usuário e não quiser se preocupar com o TreeCellrender: estender JTree e substituir convertvaluetotext com seu próprio código que cria uma string descritiva para esse objeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top