【发布时间】:2013-07-18 14:21:54
【问题描述】:
我正在使用 scala.swing,但 Java Swing 的解决方案也适用于 scala.swing。 因此,我将此问题作为 Java Swing 问题打开。
我在 JScrollPane 中有带 TransferHandler 的 JTable。 通常,表格可以通过鼠标滚轮移动来滚动。 但是,在拖动时,滚动窗格不会随着鼠标滚轮移动。
用户可以通过将光标移动到窗格的顶部或底部来滚动(自动滚动), 但是自动滚动很慢,所以我想提供常用的鼠标功能。
我试图在 JTable 中捕获鼠标滚轮事件。 不拖动时,它接收到 MouseWheelMove 事件,但在拖动时,它什么也不接收。 我的猜测是鼠标滚轮事件被传递给与 TransferHandler 相关的东西,而不是 JTable。
如何在拖动时检测鼠标滚轮的运动? 只要达到我的目的,任何其他方法都是受欢迎的。
【问题讨论】:
-
我认为在任何程序中都不可能同时拖动和滚动。
-
任何程序是否意味着任何 Java 程序?在一些用 JS 编写的 Web UI 中是可能的。
-
我猜这是特定于操作系统的:在我尝试过的任何应用程序中,我的 win box 滚轮都没有效果(Explorer f.i. 作为 the 本机参考程序)
-
我同意上面的 cmets 并说如果您的用户需要这样做,那么您应该重新设计您的 UI。
-
我无法在 Windows XP 资源管理器中使用 kleopatra 报告的此类操作,但我可以在 Mac 上的 Chrome、Windows 和 Mac 上的 Finder 中使用。它不是特定于操作系统的,只是资源管理器(和其他应用程序)不支持这种行为。为了确保,我的意图是在表格上拖动一行,向上或向下移动,然后放下。在这个动作中,自动滚动反应不够灵敏,我想提供鼠标滚轮支持。我不确定我的 UI 设计中有什么奇怪的地方。这种动作在具有大量列表的应用程序(例如任务管理工具)中很常见。让我知道更多。