Как сделать так, чтобы модель выбора JTree позволяла выбирать только братьев и сестер? - PullRequest
2 голосов
/ 01 февраля 2011

У меня есть jtree, и я только хочу, чтобы пользователь мог выбирать узлы-братья.Если пользователь выбирает узлы, которые не являются братьями и сестрами, я хочу, чтобы ранее выбранные узлы были отменены.Пользователь также должен иметь возможность выбирать узлы, которые не являются смежными.Я надеялся расширить defaulttreeselectionmodel.

Есть ли простой способ сделать это?

1 Ответ

3 голосов
/ 01 февраля 2011

Похоже, вам придется играть с TreeSelectionModel (в котором будет храниться текущее состояние выбора) и TreeSelectionListener. Примером алгоритма может быть следующий: когда ваш выбор изменяется, если ваш TreeSelectionListener не находится в активном режиме, он входит в этот режим (это полезно, так как ваш слушатель обновит выбор в некоторых случаях, и вы не хотите сумасшедший циклы, ты хочешь?). Затем он проверяет выбранные узлы, используя TreeSelectionModel#getSelectionPaths(). Если этот размер массива один, выбран только один узел, и все в порядке. Если его размер si больше 1, вам придется написать некоторый код, чтобы убедиться, что эти узлы являются одноуровневыми (например, убедившись, что их TreePath идентичны, кроме последней части.

...