Java Swing: Как я могу определить, как JTREE отображает «объект пользователя»?

StackOverflow https://stackoverflow.com/questions/2575126

Вопрос

При использовании A. JTree, «объект пользователя» DefaultMutableTreeNode можно установить. Это может быть любого рода, но чтобы показать его, его toString() значение используется. Это не то, что мне нужно.

Как я могу изменить способ отображения пользовательского объекта?

Примечание: мой объект пользователя имеет быть чем-то другим, чем String Чтобы иметь возможность поддерживать отображение между деревом и объектами пользователя.

Это было полезно?

Решение

Я не понимаю, в чем твоя проблема.

То DefaultMutableTreeNode будет использовать то toString Метод на объекте пользователя, потому что это имеет смысл. То JTree Нужна строки, чтобы нарисовать объекты, чтобы просить своего объекта, его строка Rapresentation в порядке.

Если вам действительно нужно избегать звонка toString На вашем объекте вам понадобится способ предоставить ссылку на него в любом случае, но вам придется написать свой собственный 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();
  }
}

Но я действительно не вижу смысла делать это .. Кроме того, вы можете попробовать расширить DefaultMutableTreeNode переопределением toString метод, но вам понадобится дополнительная ссылка на ваш объект или некоторые удручение надо будет.

Если вам действительно нужна другая визуализация, чем строка, вам придется написать свои собственные оказанные TableCellRenderer.

Другие советы

Переопределить ToString () на ваш объект пользователя или предоставить TreecellRenderer, Основной пример

Еще одна альтернатива, если вы просто заботитесь о тексте, показанном для объекта пользователя и не хотите беспокоиться с Treecellrender: расширить JTREE и переопределение ConvertValueToText. С вашим собственным кодом, который создает описательную строку для этого объекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top