كيفية تعطيل التمرير من عجلة الماوس في رأس JScrollPane؟
-
05-07-2019 - |
سؤال
أنا أعمل حاليًا على إطار SWING مع JScrollPane (بما في ذلك JComponent)، مع رأس صف ورأس عمود (والتي هي أيضًا JComponents).عندما يكون الماوس فوق JComponent أو أحد هذين الرأسين، فإن عجلة الماوس تحفز التمرير.
ما أريد أن أفعله هو أن قم بتعطيل هذا التمرير عندما يكون الماوس فوق رأس العمود, ، لكن لا يمكنني العثور على طريقة مباشرة ولا في مثيل JScrollPane ولا في JComponent.وللعلم فقد اطلعت على هذه المصادر:
شكرًا لك مقدمًا إذا كان لديك طريقة للقيام بذلك.
المحلول
أعتقد أنك بحاجة إلى حل من خطوتين.
لتعطيل/تمكين عجلة التمرير للمكون بأكمله، استخدم
setWheelScrollingEnabled()
على الJScrollPane
.للقيام بذلك بشكل انتقائي، افعل
addMouseListener()
على JScrollPane لالتقاط كل حركات الماوس (بما في ذلك الدخول والخروج) حتى تعرف متى يكون المؤشر في الرأس.عندما يتغير هذا، يمكنك تشغيل التمرير أو إيقافه.
نصائح أخرى
yourJTable.getTableHeader().setReorderingAllowed(false);
يجب أن تعمل، جربه.