Java Swing: Como defino como uma JTree exibe o "objeto do usuário"?
-
24-09-2019 - |
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
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.