Java Swing: Как я могу определить, как JTREE отображает «объект пользователя»?
-
24-09-2019 - |
Вопрос
При использовании 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. С вашим собственным кодом, который создает описательную строку для этого объекта.