Melhor maneira de impedir que uma alteração na seleção do JTree aconteça?

Eu tenho uma caixa de diálogo em que cada entrada em um JTree tem suas opções correspondentes em um painel diferente, que é atualizado quando a seleção é alterada. Se as opções para uma das entradas estiverem definidas como um estado inválido, quando o usuário tentar alterar para uma entrada diferente na árvore, desejo que exista uma caixa de diálogo de erro e a seleção não seja alterada.

Eu tentei fazer isso com um valueChangeListener no JTree, mas atualmente preciso ter o método valueChanged chamado "setSelectionRow" para a seleção antiga, se houver um erro. Para que eu não receba um StackOverflow, defino um booleano "isError" como true antes de fazer isso, para poder ignorar o novo evento valueChanged. De alguma forma, sinto que não é a melhor solução. ;-)

Como eu faria isso em vez disso? Existe um bom padrão de design para situações como essa?

questionAnswers(6)

yourAnswerToTheQuestion