1

DefaultTreeModelでは、メソッドを使用してノードを挿入できますinsertNodeInto()nodesWereInserted()ただし、この非常に簡潔な Javadoc を持つメソッドも存在することに気付きました。

いくつかの TreeNode をノードに挿入した後で、このメソッドを呼び出します。

これがパブリックメソッドであることは非常に奇妙です。リスナーに対して ChangeEvents を起動する場合、それは によって呼び出されるプライベート メソッドである必要がありinsertNodeInto()ます。別のメソッドによって呼び出された変更を通知するためにメソッドを呼び出すことは、Java Swing の設計方法と多少矛盾しているようです ( elementIsInserted()JComboBox に要素を追加するときにメソッドを呼び出しません)。

nodesWereInserted()しかし、私のコードでは、 afterを呼び出しても問題ないことがわかりましたinsertNodeInto()。どちらの方法でも、ノードがツリーに追加されて GUI に表示され、結果は同じになります。

nodesWereInserted()DefaultTreeModelで同様のメソッドを呼び出す必要があるかどうかを誰かが説明してもらえますか? もしそうなら、なぜですか?insertNodeInto()単独ではできないことは何ですか?

4

3 に答える 3

0

何らかの処理を行っている独自のカスタム ツリー ノードを持つことができます。(新しいノードが挿入される資格があるかどうかを確認したいとします。)DefaultMutableTreeNode.insert() メソッドを使用して、このカスタム ツリー ノードに新しい子を追加します。この時点で、DefaultTreeModel.nodesWereInserted()メソッドを呼び出して挿入についてモデルに通知する必要があります。変更が複雑すぎる場合は、DefaultTreeModel.reload()メソッドを呼び出す必要がある場合があります。独自のツリー ノードにカスタム処理がない場合は、 を呼び出して新しいノードを追加できますDefaultTreeModel.insertNodeInto()

于 2014-05-31T10:19:20.520 に答える