2014-01-13 4 views
0

Я хотел бы узнать, как получить имя выбранного узла в JTree, а не userObject, который является текстом treenode.Java JTree получить имя выбранного узла

Я вручную создал несколько узлов дерева, и мне нужно определить, какой из них выбран по имени узла.

DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); 
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Hey it's node1!"); 
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Hey, it's node2!"); 
root.add(node1); root.add(node2); 

Теперь, исходя из этого, мне нужно знать, выбран ли узел1 или узел2. Я хочу получить возвращаемое значение node1 или node2 (имя переменной).

Чтобы сделать это более понятным: у меня есть JFrame с JPanel, JScrollPane, JTree и некоторые текстовые поля. В зависимости от того, какой узел щелкнул (узел 1 или узел 2), я хочу показать или скрыть определенные текстовые поля.

+0

Что вы подразумеваете под «именем» узла? Не будет ли это зависеть от того, как структурирован ваш объект узла? Что вы пробовали и как это не работает? –

+0

DefaultMutableTreeNode root = new DefaultMutableTreeNode («Root»); DefaultMutableTreeNode node1 = new DefaultMutableTreeNode («Привет, узел1!»); DefaultMutableTreeNode node2 = new DefaultMutableTreeNode («Привет, это node2!»); root.add (node1); root.add (node2); Теперь, исходя из этого, мне нужно знать, выбран ли узел1 или узел2. Я хочу получить возвращаемое значение node1 или node2. – xrandr

+0

ОК, ..... так снова, что вы подразумеваете под «именем»? Имена переменных имеют мало значения и меньше полезности, если это то, что вы имеете в виду. –

ответ

2

Если я хочу, чтобы у моего узла было имя, я бы расширил базовый класс, здесь DefaultMutableTreeNode, и давал ему поле «Имя строки», а затем заполнял это поле значением через конструктор, String и параметр String. А затем также дайте ему метод геттера.

Я бы не попытался получить его «переменное» имя, так как это близко к Бессмысленно. Многие переменные даже не имеют «имен», что на объект могут ссылаться переменные 2, 3, 100, ....


Редактировать
Вы состояние в редактирования:

Чтобы сделать это более ясно: у меня есть JFrame с JPanel, в JScrollPane, в JTree и некоторых текстовых полей. В зависимости от того, какой узел щелкнул (узел 1 или узел 2), я хочу показать или скрыть определенные текстовые поля.

Опять же, имена переменных близки к бессмысленным и почти не существуют в скомпилированном коде. Что считается переменным ссылки - возможность захватить переменную, а объект состояние - состояние полей, удерживаемых этой переменной.

+0

Спасибо! Hovercraft Full Of Eels - ваша идея переопределить конструктор и добавить методы set/get name - это то, что мне нужно. Я ценю вашу помощь! – xrandr

Смежные вопросы