Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengendalikan MouseMotionEvents dalam JScrollPane Bersarang dalam Java Swing?

Bagaimana untuk Mengendalikan MouseMotionEvents dalam JScrollPane Bersarang dalam Java Swing?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 12:36:02437semak imbas

How to Handle MouseMotionEvents in a Nested JScrollPane in Java Swing?

MouseMotionListener dalam Java Swing: Mengendalikan Peristiwa Apabila Komponen Bersarang

Dalam Java Swing, antara muka MouseMotionListener membolehkan pengaturcara bertindak balas kepada peristiwa pergerakan tetikus . Walau bagaimanapun, apabila berbilang komponen bersarang antara satu sama lain, penyebaran peristiwa boleh menjadi rumit. Artikel ini menangani senario tertentu di mana MouseMotionEvents JScrollPane tersuai disekat oleh komponen bersarangnya.

Masalah: Menyekat Acara dalam Komponen Bersarang

Masalah timbul apabila menambah komponen ke JScrollPane, mengakibatkan peristiwa MouseMoved dan MouseDragged disekat. Ini menghalang kefungsian yang dimaksudkan untuk menyorot pandangan JScrollPane.

Pendekatan Ad Hoc: Menggunakan Tindakan Menatal JScrollPane

Penyelesaian melibatkan memanfaatkan tindakan sedia ada dalam JScrollPane yang biasa digunakan dalam pengikatan utama. Pendekatan ini membolehkan penatalan dicetuskan oleh pergerakan tetikus itu sendiri.

Pelaksanaan:

  1. Tentukan kelas pemasa (ScrollTimer) yang melaksanakan ActionListener dan mengendalikan tindakan menatal .
  2. Tambahkan MouseAdapter pada JViewport JScrollPane untuk mengesan pergerakan tetikus.
  3. Apabila kursor tetikus berada dalam jarak yang ditentukan dengan tepi port pandangan, pemasa tatal yang sepadan dimulakan.
  4. Pemasa secara berkala mencetuskan tindakan menatal yang sesuai (cth., tatalKiri, tatal Kanan) menggunakan peta tindakan JScrollPane.
  5. Pemasa berhenti selepas bilangan seruan yang telah ditetapkan atau apabila kursor tetikus bergerak menjauhi tepi.

Kod Contoh:

Coretan kod berikut menunjukkan pelaksanaan:

<code class="java">// ScrollTimer class...
// ScrollPane class...
// ...

public static void main(String[] args) {
    EventQueue.invokeLater(() -> new ScrollAction().display());
}</code>

Faedah:

  • Menyediakan cara yang mudah dan fleksibel untuk mengendalikan peristiwa gerakan tetikus walaupun apabila komponen bersarang.
  • Menghapuskan keperluan untuk penyebaran acara manual.

Nota: Pendekatan ini boleh disesuaikan dengan melaraskan nilai N untuk bilangan seruan pemasa dan KELEWATAN untuk selang pemasa.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan MouseMotionEvents dalam JScrollPane Bersarang dalam Java Swing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn