Java使用clearselection()方法的问题

时间:2009-11-19 05:06:16

标签: java swing jtree

我的程序中有2棵树。当选择另一个树中的某些东西时,我使用JTree的clearselection()方法清除1树中的选择。主代码是这样的:(在valueChanged事件监听器内部,树是触发当前选择的树)

    if ( tree == tree1 ){

        tree2.clearSelection();

    } else {

        tree1.clearSelection();

    }

当我第一次选择时,它可以正常工作。但是当我尝试在此之后从另一个树中进行选择时,看起来valueChanged方法被调用两次。任何解决方案?

2 个答案:

答案 0 :(得分:1)

您是否使用了我在this question中提供的代码?

这包括一个标记来解决引入无限循环的问题,并且在处理当前选择事件时也应忽略后续选择事件。

BTW鉴于这与上一个问题直接相关,您可能最好只评论上一篇文章。这样,所有上下文都保存在一个地方。

答案 1 :(得分:0)

clearSelection()也会触发valueChanged,所以你需要一个变通方法,添加一些标志,并且当它为真时不要清除选择。

EDIT。似乎使用一些标志是棘手的。您是否可以使用MouseListener并在mouseClicked事件中运行相同的代码?