繁体   English   中英

JTree如何响应已更改的DefaultMutableTreeNode?

[英]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上设置了包含DefaultMutableTreeNodeTreeModel ,就可以更好地确保对模型(或节点)所做的任何更改以及在EDT上发生的相应事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM