Comment désactiver le défilement de la molette de la souris dans un en-tête JScrollPane?

StackOverflow https://stackoverflow.com/questions/1803375

  •  05-07-2019
  •  | 
  •  

Question

Je travaille actuellement sur un cadre SWING avec un JScrollPane (y compris un JComponent), avec un en-tête de ligne et un en-tête de colonne (qui sont également des JComponents). Lorsque la souris survole le composant JComponent ou l’un de ces 2 en-têtes, la molette de la souris provoque le défilement.

Je souhaite désactiver ce défilement lorsque la souris survole l'en-tête de colonne , mais je ne trouve pas de moyen direct, ni dans l'instance JScrollPane, ni dans JComponent. Pour information, j'ai consulté ces sources:

Merci d'avance si vous avez le moyen de le faire.

Était-ce utile?

La solution

Je pense que vous avez besoin d'une solution en 2 étapes.

  • Pour désactiver / activer la molette de défilement pour tout le composant, utilisez setWheelScrollingEnabled () sur le JScrollPane .

  • Pour faire cela sélectivement, faites addMouseListener () sur JScrollPane pour capturer tous les mouvements de la souris (y compris les entrées et les sorties) afin que vous sachiez quand le pointeur se trouve dans l'en-tête. Chaque fois que cela change, vous pouvez activer ou désactiver le défilement.

Autres conseils

votreJTable.getTableHeader (). setReorderingAllowed (false);

devrait fonctionner, essayez-le.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top