如何禁用JScrollPane标题中的鼠标滚轮滚动?

我目前正在使用JScrollPane(包括JComponent)处理 SWING框架, 其中包含行标题和列标题 (也是JComponents)。 当鼠标位于JComponent或这两个标题之一时,鼠标滚轮会引发滚动。

我想要做的是当鼠标位于列标题上时禁用此滚动 ,但我无法在JScrollPane实例中找到直接方式,也无法在JComponent中找到。 有关信息,我查看了这些来源:

  • Sun的Howto on JScrollPane
  • JScrollPane javadoc
  • JComponent javadoc

如果您有办法,请提前感谢您。

我认为你需要一个两步解决方案。

  • 要禁用/启用整个组件的滚轮,请在JScrollPane上使用setWheelScrollingEnabled()

  • addMouseListener()选择地执行此操作,请在JScrollPane上执行addMouseListener()以捕获所有鼠标移动(包括进入和离开),以便您知道指针何时位于标头中。 每当此更改时,您可以打开或关闭滚动。

yourJTable.getTableHeader().setReorderingAllowed(false);

应该工作,试一试。