JScrollPane:禁用滚动滚动

时间:2011-11-03 15:08:35

标签: java swing jscrollpane drag

我正在使用一些JGraphX组件,但这个问题可以应用于java的一般用途。

我在JScrollPane中有一个组件。我遇到的问题是我能够通过“抓住”视图并像谷歌地图一样移动视图来平移视图。但如果光标离开视口,则滚动会改变方向。我做了一些研究,发现导致问题的问题。可以在此页面上找到它的一部分,它开始讨论scrollpane的工作原理。

http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html

  

将光标移到图像上并按光标。继续   按光标,拖动到图像外的一点并暂停。该   图像的可见区域朝向光标移动。这个   滚动窗格启用了滚动拖动功能,并且   使用JComponent API,但它由自定义组件实现   显示图像。

它有一个小的演示,所以你可以看到它是如何工作的,以及代码可供下载。

因此默认情况下,滚动窗格有一个滚动实现拖动,但它实际上与我需要滚动的方式相反。我正在使用的JGraphX库扩展了大多数用于以某种方式使自己受益的类,但基本思想仍然适用。我真的只需要知道禁用它的最简单方法。页面说它是由scrollpane和JComponent API启用的,但是实际启用了什么?

2 个答案:

答案 0 :(得分:3)

不确定,但我认为您需要使用:

component.setAutoscrolls( false );

答案 1 :(得分:2)

来自JComponent

This method看起来是调查的最佳起点。您可以在滚动窗格中检索该组件,并使用false调用该方法。这是默认设置,但JGraphX可能默认启用它。

或者,您可以从滚动窗格中获取MouseListener和/或MouseMotionListener,并将其替换为覆盖拖动行为的内容。由于这些是接口,您可以使用proxy个对象。但是,看起来有些黑客。