2009-11-19 6 views
0

У меня есть 2 дерева в моей программе. Iam, используя метод clearselection() JTree, чтобы очистить выделение в 1 дереве, если выбрано что-то в другом дереве. Основной код-то вроде этого: (в качестве слушателя событий ValueChanged и дерева будучи один, на котором был вызван текущий выбор)Проблема Java с методом clearselection()

if (tree == tree1){ 

     tree2.clearSelection(); 

    } else { 

     tree1.clearSelection(); 

    } 

Когда я выбираю в первый раз, он отлично работает. Но когда я пытаюсь выбрать из другого дерева после этого, кажется, метод valueChanged получает вызов дважды. Любое решение?

ответ

1

Вы использовали код, который я вам дал в this question?

Включает флаг, чтобы обойти проблему введения бесконечного цикла и также игнорировать последующие события выбора, когда он обрабатывает текущий.

BTW Учитывая, что это относится непосредственно к предыдущему вопросу, возможно, вам лучше было просто комментировать предыдущий пост. Таким образом, весь контекст сохраняется в одном месте.

+0

Мой плохой. Я фактически отредактировал предыдущий вопрос, предполагая, что вы будете уведомлены об этом. Я использовал код точно так же, как и вы. Это не сработало. Снова выстрелит и сообщит. – Goutham

0

clearSelection() запускает valueChanged, поэтому вам нужно обходное решение, добавить флаг и не очищать выделение, когда оно истинно.

EDIT. Кажется, что использование какого-то флага сложно. Можете ли вы использовать MouseListener вместо этого и запускать тот же код в событии mouseClicked?

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