Я работаю с 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
.
Спасибо за любую помощь!