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

问题描述:

我目前正在使用带有行标题和列标题(也是JComponents)的JScrollPane(包括JComponent)处理一个SWING框架。当鼠标悬停在JComponent或这两个标题之一上时,鼠标滚轮会引发滚动。如何禁用JScrollPane标题中鼠标滚轮的滚动?

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

谢谢你在前进,如果你有办法做到这一点。

我认为你需要一个2步骤的解决方案。

  • 禁用/启用对整个组件的滚动轮,在使用JScrollPanesetWheelScrollingEnabled()

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

+0

好吧,我测试了一下:实际上,自定义的MouseListener应该被添加到用于标头(而不是JScrollPane)的JComponent中,但基本上它可以工作。非常感谢你。 – Sobe 2009-11-26 13:28:17

+0

优秀!感谢您为我疯狂而疯狂的想法玩天竺鼠。我很高兴看到它的工作。 :) – 2009-11-26 15:27:34

yourJTable.getTableHeader().setReorderingAllowed(false);

应该工作,尝试一下。