¿La mejor manera de evitar que ocurra un cambio de selección de JTree?

Tengo un cuadro de diálogo donde cada entrada en un JTree tiene sus opciones correspondientes en un panel diferente, que se actualiza cuando cambia la selección. Si las opciones para una de las entradas se establecen en un estado no válido, cuando el usuario intenta cambiar a una entrada diferente en el árbol, quiero que haya un diálogo de error y que la selección no cambie.

Intenté hacer esto con un valueChangeListener en el JTree, pero actualmente tengo que hacer que el método valueChanged llame "setSelectionRow" a la selección anterior si hay un error. Para no obtener un StackOverflow, configuro un "isError" booleano como verdadero antes de hacer esto para que pueda ignorar el nuevo evento valueChanged. De alguna manera tengo la intuición de que esta no es la mejor solución. ;-)

¿Cómo lo haría en su lugar? ¿Existe un buen patrón de diseño para situaciones como esta?

Respuestas a la pregunta(6)

Su respuesta a la pregunta