كيفية تعطيل التمرير من عجلة الماوس في رأس JScrollPane؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

أنا أعمل حاليًا على إطار SWING مع JScrollPane (بما في ذلك JComponent)، مع رأس صف ورأس عمود (والتي هي أيضًا JComponents).عندما يكون الماوس فوق JComponent أو أحد هذين الرأسين، فإن عجلة الماوس تحفز التمرير.

ما أريد أن أفعله هو أن قم بتعطيل هذا التمرير عندما يكون الماوس فوق رأس العمود, ، لكن لا يمكنني العثور على طريقة مباشرة ولا في مثيل JScrollPane ولا في JComponent.وللعلم فقد اطلعت على هذه المصادر:

شكرًا لك مقدمًا إذا كان لديك طريقة للقيام بذلك.

هل كانت مفيدة؟

المحلول

أعتقد أنك بحاجة إلى حل من خطوتين.

  • لتعطيل/تمكين عجلة التمرير للمكون بأكمله، استخدم setWheelScrollingEnabled() على ال JScrollPane.

  • للقيام بذلك بشكل انتقائي، افعل addMouseListener() على JScrollPane لالتقاط كل حركات الماوس (بما في ذلك الدخول والخروج) حتى تعرف متى يكون المؤشر في الرأس.عندما يتغير هذا، يمكنك تشغيل التمرير أو إيقافه.

نصائح أخرى

yourJTable.getTableHeader().setReorderingAllowed(false);

يجب أن تعمل، جربه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top