如何一个JTree响应到改变DefaultMutableTreeNode?(how does a J

2019-10-16 20:53发布

只是试图找出发生了什么,在线程而言,如果你改变一个DefaultMutableTreeNode的用户对象在非EDT线程?

我不是在谈论DefaultTreeModel的事件,即insertNodeInto和removeNodeFromParent,这我很清楚应该总是在EDT上运行... 我想...

在更改节点的用户对象的情况下,似乎JTree.TreeModelHandler在为这是‘听’此类事件的事......但有有理由期待,听者只会在被通知这种变化的螺纹在事件发生? 并将其传播仅在自同一个线程响应?

很明显,因此,我假定这是一个相当基本的“观察者”的格局。

那么,这是否意味着在JTree的节点最变化实际上必须做出在美国东部时间发生,否则在事情没有发生的风险,当你期待什么呢?

在DefaultMutableTreeNode的API它确实说,“你必须做你自己的同步” ......

Answer 1:

在Swing线程规则很简单:Swing是单线程的,和涉及Swing组件的所有操作应在美国东部时间发生。

所以,只要你TreeModel含有DefaultMutableTreeNode s被设定在JTree你最好确保你的模型(或节点的),这被解雇的任何变化和相应的事件的发生EDT。



文章来源: how does a JTree respond to a changed DefaultMutableTreeNode?