Просто пытаемся выяснить, что произойдет с точки зрения потоков, если вы измените пользовательский объект DefaultMutableTreeNode в потоке, отличном от EDT?
Я не говорю о событиях DefaultTreeModel, а именно о insertNodeInto и removeNodeFromParent, которые, как я совершенно ясно, всегда должны запускаться в EDT... Я думаю...
В случае изменений в пользовательских объектах узлов оказывается, что JTree.TreeModelHandler — это вещь, которая «прослушивает» такие события... но есть ли основания ожидать, что слушатель будет уведомлен только о таком изменении в нить где произошло событие? И будет распространять свой ответ только в этом же потоке?
Очевидно, поэтому я предполагаю, что это довольно простой шаблон «наблюдатель».
Означает ли это, что большинство изменений в узлах JTree на самом деле должны происходить в EDT, с риском того, что в противном случае что-то произойдет не так, как и когда вы ожидаете?
В API для DefaultMutableTreeNode действительно говорится, что «вы должны выполнить собственную синхронизацию»...