gpt4 book ai didi

java - JTree 如何响应已更改的 DefaultMutableTreeNode?

转载 作者:行者123 更新时间:2023-11-29 03:45:39 24 4
gpt4 key购买 nike

如果您在非 EDT 线程中更改 DefaultMutableTreeNode 的用户对象,只是想弄清楚在线程方面会发生什么?

我不是在谈论 DefaultTreeModel 事件,即 insertNodeInto 和 removeNodeFromParent,我很清楚应该始终在 EDT 中运行...我认为...

在节点的用户对象发生变化的情况下,JTree.TreeModelHandler 似乎是“监听”此类事件的东西......但是是否有理由期望监听器只会收到此类事件的通知更改事件发生的线程?并且只会在同一个线程中传播其响应?

显然,因此,我假设这是一个相当基本的“观察者”模式。

那么这是否意味着 JTree 节点中的大多数更改实际上必须在 EDT 中发生,否则冒着事情没有按您预期的时间发生的风险?

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

最佳答案

Swing 线程规则非常简单:Swing 是单线程的,所有涉及 Swing 组件的操作都应该发生在 EDT 上。

因此,一旦包含 DefaultMutableTreeNodeTreeModel 设置在 JTree 上,您最好确保对模型所做的任何更改(或节点的)和触发的相应事件发生在 EDT 上。

关于java - JTree 如何响应已更改的 DefaultMutableTreeNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com