我有一个非常大的项目,我正在研究,图形编辑器,我在使用swing组件时遇到了一些大问题。但是,现在我有程序员最糟糕的噩梦,这个错误只发生在某些时候 。
如果我尝试选择JTree
中的元素,无论是在添加元素时,还是在图表中选择它们时选择它们(JInternalFrame
),其中一些元素都不会被扩展。
我的结构是这样的,我有一个工作区,包含包含图表的项目和项目。图表中包含我拥有的所有元素,例如圆圈,矩形等,在文件夹中(如果它们是圆圈,则将它们放在圆圈文件夹中......)。
要知道的另一件事是我通过setSelectedPath/Paths
的{{1}}方法选择我的元素。
有些事情可能有助于理解我的工作和尝试的内容:
JTree
返回好路径)getTreeModel.getPathToRoot
设置为true 我希望有人知道该怎么做,虽然我认为这是一个非常复杂的问题。请问任何有助于我帮助的事情。
答案 0 :(得分:3)
好的,谢谢大家回答,但我找到了一个非常简单的解决方法来解决这个问题。 由于某种原因,如果最后一个路径组件是叶子,则扩展的东西没有效果。
我所做的只是让我的叶子节点为isLeaf
方法返回错误,而我的所有问题都消失了。
答案 1 :(得分:1)
如果addWhatever()
向JTree
发出正确的TreeModelEvent
fireChildAdded()
,firePathChanged()
,fireChildrenLoaded()
,treeStructureChanged()
)
GUI的所有更改都将移至BackGround Task(s)
,请查看SwingWorker
或Runnable#Thread
(最清晰,最简单的方式),但需要Runnable#Thread
将所有输出(Swing方法)包装到invokeLater