【发布时间】:2011-12-21 06:50:45
【问题描述】:
我正在使用一些 JGraphX 组件,但这个问题可以应用于 java 的一般用途。
我在 JScrollPane 中有一个组件。我遇到的问题是我能够通过“抓取”视图并像谷歌地图一样移动它来平移视图。但是如果光标离开视口,滚动会改变方向。我做了一些研究,发现了导致问题的问题。可以在此页面的下方部分找到它,它开始讨论滚动窗格的工作原理。
http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html
将光标移到图像上并按下光标。继续 按下光标,拖动到图像外的一点并暂停。这 图像的可见区域向光标移动。这 滚动窗格启用了滚动拖动功能,并且 使用 JComponent API,但它是由自定义组件实现的 显示图像。
它有一个小演示,因此您可以看到它的工作原理以及可供下载的代码。
所以默认情况下,滚动窗格实现了滚动拖动,但它实际上与我需要滚动的方式相反。我正在使用的 JGraphX 库扩展了大多数用于以某种方式使自己受益的类,但基本思想仍然适用。我真的只需要知道禁用它的最简单方法。你的页面说它由滚动窗格和 JComponent API 启用,但实际上启用了什么?
【问题讨论】:
-
感谢两位的帮助。我确实经历了所有可能将自动滚动设置为 true 并将其设置为 false 的类。但最后,没有骰子。我已经尝试修复鼠标侦听器以满足我的需要......也没有骰子。我来这里是因为我更喜欢这里的人,而且你们知识渊博,但我想我必须等待那里的回应。 :( 我最初认为自动滚动也是问题。但无论我在哪里将其设置为 false,它仍然会这样做
-
伙计,这听起来很烦人。也许您应该从滚动窗格和包含的组件中获取所有 Mouse(Motion)Listeners,然后打印出一个列表。看看每种类型有多少。然后尝试删除它们,看看仍然会发生什么(如果有的话)。如果您无法通过在视口外拖动来滚动,那么其中一个鼠标侦听器必须是罪魁祸首。你能告诉我们你在窗格中有什么组件类吗?如果里面还有别的东西?或许我们可以在本地模拟一下并进行一些实验。
-
Jgraphx 的布局相当混乱。如果您熟悉它,这对您来说可能会更清楚。但我有一个扩展 jpanel 的类,它有一个扩展他们的 mxGraphComponent 的类。 mxGraphComponent 扩展了 jScrollpane。到目前为止,一切都很好。但这是令人困惑的地方。我实际上没有看到一个组件。它有一个画布类,似乎可以完成所有渲染,但我真的不知道。它还有一个看起来只是处理事件的 mxGraph 对象。但它们实际上都不是来自组件类。自从我查看此代码以来已经有一段时间了
-
mxGraphComponent 有一个扩展 jcomponent 的类,称为 mxGraphControl。但我将它的自动滚动设置为 false,最后没有改变......
-
我从我没有创建的 mxGraphComponent 中删除了所有侦听器,现在它可以按我的意愿工作了!非常感谢!
标签: java swing jscrollpane drag