我正在用 Java 编写一个程序,并且我有一个 SWT 树小部件,用户应该通过拖放来玩弄它。
现在的问题是,当用户拖放分支时,我想将分支项的父项更改为它被拖放到的任何 treeItem,但似乎没有任何方法可以这样做。我可以简单地创建一个新的treeItem,但是没有简单的方法来转移孩子,所以我需要递归地重新定义所有孩子,他们的孙子等等。对我来说,我需要重新制作整个分支以更改父级,这似乎很笨拙且效率低下。
有什么干净的方法可以做到这一点吗?
我正在用 Java 编写一个程序,并且我有一个 SWT 树小部件,用户应该通过拖放来玩弄它。
现在的问题是,当用户拖放分支时,我想将分支项的父项更改为它被拖放到的任何 treeItem,但似乎没有任何方法可以这样做。我可以简单地创建一个新的treeItem,但是没有简单的方法来转移孩子,所以我需要递归地重新定义所有孩子,他们的孙子等等。对我来说,我需要重新制作整个分支以更改父级,这似乎很笨拙且效率低下。
有什么干净的方法可以做到这一点吗?
好吧,干净的方法是将视图/小部件与模型分开(如在 MVC 中)。在 SWT 的情况下,您应该使用TreeViewer
和实现ITreeContentProvider
. jFace 将为您创建树节点,您只需要更新模型并刷新查看器。