我有一个JTree,一个JTable和一个JList,它显示相同的对象集,但顺序不同,信息不同。如果从某个组件中选择了一个项目,我想在另外两个组件上选择相同的对象(这意味着它们应该突出显示)。当然,我用监听器监控选择事件。这是问题,当Component检索所选对象时,我必须通过调用其上的选择方法来确保在其他Components上选择该对象。然后,这将通知选择侦听器其他两个组件。但是这些事件中的每一个都会在除了它自身之外的组件上调用选择事件,从而导致三个组件之间出现无限循环。
我看到一个解决方案是使用布尔标志,并且如果设置了标志,则使监听器不传播选择。然而,这看起来很麻烦而且不优雅。有没有办法简单地告诉JTree,JTable和JList进行选择但不激活任何事件(反对触发事件然后用布尔标志捕获和停止它)?
答案 0 :(得分:1)
看看SharedModelDemo。我认为它能满足您的需求。
答案 1 :(得分:0)
我会使用一个标志来指示它是用户更改还是内部更改,但是yu也可以在选择调用之前删除侦听器,并在之后添加它们以防止事件触发。