Отображение информации о JTree с помощью TreeCellRenderer - PullRequest
0 голосов
/ 14 марта 2019

Я работаю с JTree, где я хочу отобразить одно конкретное свойство объектов, которые я вставляю в него.

Когда я создаю JTree, я делаю это следующим образом, используя DefaultMutableTreeNode, DefaultTreeModel и объект с некоторыми конкретными свойствами, называемыми Units. Этот объект имеет такие свойства, как имя, тип, координаты, направление и некоторые другие:

JTree unitsTree;
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Unit Types");
DefaultTreeModel treeModel = new DefaultTreeModel(root);
DefaultMutableTreeNode newUnitNode = new DefaultMutableTreeNode(((Units) symbol).getName(), true);
newUnitNode.setUserObject(((Units) symbol));
unitsTree.setModel(treeModel);
unitsTree.addTreeSelectionListener(fSymbolCustomizerPanelSelectionListener);

То, что я делаю здесь, - это создание JTree с некоторым количеством Units внутри, и когда я щелкаю по одному из узлов Units, я показываю его свойства на другой панели. Когда я делаю это:

DefaultMutableTreeNode newUnitNode = new DefaultMutableTreeNode(((Units) symbol).getName(), true);

Я вижу, что мой JTree отображает имя newUnitNode, когда я добавляю узел к JTree в модели. Но мне нужно иметь всю ссылку на объект на JTree, а не только имя, поэтому я делаю это:

DefaultMutableTreeNode newUnitNode = new DefaultMutableTreeNode(((Units) symbol).getName(), true);
newUnitNode.setUserObject(((Units) symbol));

Моя проблема здесь. В тот момент, когда я установил пользовательский объект для узла, JTree не отображает название устройства. Вместо этого он отображает другое свойство, в моем случае, тип устройства.

Я видел много форумов, говорящих о TreeCellRenderer, но я не могу понять, как я могу использовать TreeCellRenderer для отображения свойства, которое я хочу показать в JTree.

Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...