我有一个从带有自定义 TreeCellRenderers 的 JTree 派生的类。我已经在该树中实现了拖放,因此用户可以重新排列树节点。
删除模式是DropMode.ON_OR_INSERT
,因此用户可以在其他节点上或其他节点之间删除节点。当用户拖动节点时,如果指针指向节点之间,则会绘制一条蓝线,指示将插入节点的位置。如果指针位于节点上,则不指示将添加节点的位置。这只发生在我使用自定义 TreeCellRenderer 时。如果我使用 DefaultTreeCellRenderer,则拖放节点会在拖动过程中突出显示。
我在网上找到了一些示例,人们在其中存储当前在 JTree 中突出显示的节点并从 TreeCellRenderer 查询它,如果为应该突出显示的节点调用 TreeCellRenderer,则以不同的颜色呈现节点。
是否有更优雅的解决方案来突出显示放置节点?我还没有弄清楚 DefaultTreeRenderer 是如何做到这一点的——它似乎没有钩子来拖放功能。