在我的应用程序中,我在左侧显示了一个 JTree,如果用户双击叶子,则在右侧加载相应的数据。在加载此数据时,我 (i) 保存现有文档(此处不相关),(ii) 更新树以说明可能发生的任何更改,(iii) 确保在更新后的树(即用户双击的节点)和(iv)加载选定的节点。应用程序逻辑工作正常,即加载了正确的文件,因此我们知道在树中选择了正确的节点,但在上述步骤之后,视觉上根本没有选择任何节点。
我知道这个问题,但问题似乎是树不在焦点上。我已经尝试了该帖子中建议的不同补救措施,但未能解决我的问题。(还有这个相关的论坛帖子,虽然该网站现在似乎已经关闭。此外,这个问题表面上看起来很相似,但那里的问题源于 OP 构建专有渲染器。)
请看下面我的代码;我试图将其减少到 SSCCE,但我仍然卡住了。我目前最好的猜测是,问题与每次updateTree
调用时都会创建一个全新的 TreeModel 并将其加载到树中的事实有关,并且这在某种程度上使得无法直观地选择正确的节点。如果情况确实如此,那么一个潜在的解决方案是更改 TreeModel 而不是从头开始重新创建它,但是 (i) 这对我来说不太方便,并且 (ii) 我相信这本身就是一个有趣的问题对。
一只名叫tom的猫
相关分类