[英]how to have Folder Structure with DefaultMutableTreeNode,JTree
[英]how does a JTree respond to a changed DefaultMutableTreeNode?
如果在非EDT线程中更改DefaultMutableTreeNode的用户对象,只是试图弄清楚线程方面会发生什么?
我不是在谈论DefaultTreeModel事件,即insertNodeInto和removeNodeFromParent,我很清楚应该总是在EDT中运行...... 我想......
在更改节点的用户对象的情况下,似乎JTree.TreeModelHandler是“侦听”此类事件的事物......但是有理由期望只有通知侦听器这样的更改。发生事件的线程? 并且只会在那个自相同的线程中传播它的响应?
因此,显然,我假设这是一个相当基本的“观察者”模式。
那么这是否意味着JTree节点中的大多数变化实际上必须在EDT中发生,否则会发生在您预期的情况下未发生的事情的风险?
在DefaultMutableTreeNode的API中,确实说“你必须自己进行同步”......
Swing线程规则非常简单:Swing是单线程的,涉及Swing组件的所有操作都应该在EDT上进行。
因此,只要在JTree
上设置了包含DefaultMutableTreeNode
的TreeModel
,就可以更好地确保对模型(或节点)所做的任何更改以及在EDT上发生的相应事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.