Правильный формат для DefaultTreeSelectionModel.addSelectionPaths () - PullRequest
1 голос
/ 09 мая 2011

Я работаю с классом, который расширяет DefaultTreeSelectionModel для создания CheckBoxTree. При щелчке узла флажка на дереве он запускает MouseEvent, который получает TreePath непосредственно из JTree ("tree").

TreePath path = tree.getPathForLocation(me.getX(), me.getY());

Этот «путь» передается в функцию DefaultTreeSelectionModel.addSelectionPath (), и выбираются соответствующие флажки. Пока все хорошо!

Что я хотел бы сделать, это передать свой собственный TreePath в DefaultTreeSelectionModel.addSelectionPath (), но до сих пор у меня возникают проблемы с форматом TreePath, который, кажется, отличается от TreePath, который я получаю из кода выше, потому что он не имеет такого же эффекта; и это моя проблема.

Когда я нажимаю CheckBox (как это работает), распечатка TreePath выглядит как «[/, Documents and Settings, Administrator]», но для имитации мне нужно будет создать TreePath, как:

File[] finalPath = new File[3];
finalPath[0] = (File)parentNode; // parentNode is the root from the Model
finalPath[1] = new File("Documents and Settings");
finalPath[2] = new File("Administrator");
TreePath path = new TreePath(finalPath);

... который не работает, потому что индексы 1 и 2 не ссылаются на корень, но распечатывает как "[/, Documents and Settings, Administrator]", как и метод рабочего щелчка.

Итак, я попробовал:

File[] finalPath = new File[3];
finalPath[0] = (File)parentNode; // parentNode is the root from the Model
finalPath[1] = new File(finalPath[0],"Documents and Settings");
finalPath[2] = new File(finalPath[1],"Administrator");
TreePath path = new TreePath(finalPath);

..., который оставляет выбранным «parentNode» и «Administrator», но не «Documents and Settings». Распечатка "[/, / Документы и настройки, / Документы и настройки / Администратор]"

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

File[] finalPath = new File[1];
finalPath[0] = new File(parentNode+"Documents and Settings"+File.separator+"Administrator");
TreePath path = new TreePath(finalPath);

... который ничего не выбирает. Распечатка "[\ Documents and Settings \ Администратор]"

Итак, спустя примерно 5 часов попыток различных перестановок, приведенные выше являются самыми близкими к получению, и теперь я публикую свою проблему здесь в надежде получить ответ. Благодаря !!!! * * 1023

...