我的程序中有2棵树。当选择另一个树中的某些东西时,我使用JTree的clearselection()方法清除1树中的选择。主代码是这样的:(在valueChanged事件监听器内部,树是触发当前选择的树)
if ( tree == tree1 ){
tree2.clearSelection();
} else {
tree1.clearSelection();
}
当我第一次选择时,它可以正常工作。但是当我尝试在此之后从另一个树中进行选择时,看起来valueChanged方法被调用两次。任何解决方案?
答案 0 :(得分:1)
您是否使用了我在this question中提供的代码?
这包括一个标记来解决引入无限循环的问题,并且在处理当前选择事件时也应忽略后续选择事件。
BTW鉴于这与上一个问题直接相关,您可能最好只评论上一篇文章。这样,所有上下文都保存在一个地方。
答案 1 :(得分:0)
clearSelection()也会触发valueChanged,所以你需要一个变通方法,添加一些标志,并且当它为真时不要清除选择。
EDIT。似乎使用一些标志是棘手的。您是否可以使用MouseListener并在mouseClicked事件中运行相同的代码?