Я работаю с Java Swing JTree, и мне нужно найти соответствующий индекс строки выбранного узла в его пути. Например, когда я выбираю Polygon 2
на картинке ниже,
-и используйте этот фрагмент кода,
tree.getRowForPath(/*path of polygon node*/);
-Я получаю правильное значение 2
. Однако, когда я выбираю Polygon 3
, я получаю значение 6
. Это потому, что при нахождении подходящего узла учитываются узлы, которые Polygon 2
расширились, в счетчик. Я не хочу этого, так как мне нужно вернуть значение 3, когда выбрано Polygon 3
, независимо от того, расширены ли какие-либо предыдущие узлы или нет.
Я подумал о том, чтобы перебрать все узлы, найти, какие из них стоят перед индексом строки выбранного, посмотреть, расширены ли они, и подсчитать, сколько узлов они содержат. Затем добавьте это в строку, полученную указанным выше методом.
Проблема в том, что я не знаю, как к этому подойти. У меня есть несколько попыток спагетти-кода, но я сомневаюсь, что это полезно.
Любая помощь приветствуется.
3
в качестве результата? Судя по всему, вы можете получить узел без проблем, зачем вам значение строки? Если вы используете что-то вродеDefaultMutableTreeNode
, вы можете указатьuserObject
, который может содержать дополнительную информацию, которая может помочь вам в достижении вашей цели. - person MadProgrammer   schedule 10.01.2017DefaultMutableTreeNode
. Я могу ошибаться. - person Eric   schedule 10.01.2017DefaultMutableTreeNode
управлятьPolygon
или иметь некоторую ссылку на модель, которую он может обновлять, но это я: P ... в основном, вы хотите минимизировать степень сплоченности, которая существует междуJTree
и вашей существующей моделью - person MadProgrammer   schedule 10.01.2017