Java TransferHandler,JTable&;滚动面板

Java TransferHandler,JTable&;滚动面板,java,swing,scroll,Java,Swing,Scroll,因此,问题是:我在JScrollPane中有一个稍微修改过的JTable实现。然后,JTable注册了一个TransferHandler,以便可以对项进行重新排序,并将其插入到彼此中 问题是,一旦我们从Java免费获得的拖放功能开始使用,滚动就无法获得适当的MouseEvents使autoscroll正常工作 我在JavaDoc上看到过关于这个的模糊讨论(http://docs.oracle.com/javase/7/docs/technotes/guides/swing/1.4/dnd.htm

因此,问题是:我在JScrollPane中有一个稍微修改过的JTable实现。然后,JTable注册了一个TransferHandler,以便可以对项进行重新排序,并将其插入到彼此中

问题是,一旦我们从Java免费获得的拖放功能开始使用,滚动就无法获得适当的MouseEvents使autoscroll正常工作

我在JavaDoc上看到过关于这个的模糊讨论(http://docs.oracle.com/javase/7/docs/technotes/guides/swing/1.4/dnd.html).


但我找不到一个不确定的解决方案,也找不到任何其他引用相同问题的人。。。那么,有没有人提供了一些有用的知识呢?

这种行为的原因是拖放行为以及 TransferHandler未配置为支持自动滚动。转让人 一旦开始拖放,将接管鼠标事件,这意味着 无法执行JTable的自动滚动行为

在文档、链接中对此只有模糊的参考 提供的资料如下:

(关键字:BasicDropTargetListener)


我认为Oracles DND教程包含关于JScrollPane中JTable的代码示例,DNDdon不太了解:我们从Java免费获得的功能——您是从头开始做DND的吗?若然,原因为何?或者为什么不禁用默认值?换言之:SSCCE会很有帮助:-)呃,TransferHandler所在的DND功能就是我所说的。解释的扩展:DND功能使用鼠标事件来查找DND操作的开始和结束位置。这意味着我们在Swing中免费获得的autoscroll功能永远不会获得用于滚动的鼠标事件。因此,为了解决这个问题,需要修改TransferHandler以提供autoscroll功能。上面的链接文章含糊地提到了这方面的例子,但在其他地方没有它们的踪迹。我想知道是否有人知道我在哪里可以遇到一些实现,或者这个功能的例子。嗯。。。仍然没有达到您想要的效果:禁用autoscroll?因为拖动时自动滚动似乎是默认行为(至少对于一个用户来说,没有尝试JTable),所以在JTree上拖放是个问题。将节点移动到JTree上的新位置所需的功能。现在的问题是,为了从树的顶部拖动到底部(使用滚动窗格),如果用户不在滚动窗格底部前后移动鼠标光标,树不会自动滚动。理论上,用户只需将鼠标光标(握住节点)放在滚动窗格的外面,它就会自动移动。嗯。。。刚刚在JTree上用一个快速自定义处理程序检查过:这是默认行为(win,都是jdk6/7),无法重现鼠标前后移动的需要,它会在可见树矩形的顶部/底部开始自动滚动。怀疑出了什么问题。你可以考虑显示一个SSCCE来帮助跟踪它:-加上你的Questin来反映你正在谈论JTree(vs. jTABLE)的事实。