Rumah > Java > javaTutorial > Bagaimana untuk Mendayakan Pengendalian Acara MouseRelease Selepas Seret dan Lepas pada JLabel?

Bagaimana untuk Mendayakan Pengendalian Acara MouseRelease Selepas Seret dan Lepas pada JLabel?

Barbara Streisand
Lepaskan: 2024-10-23 22:07:30
asal
645 orang telah melayarinya

How to Enable MouseRelease Event Handling After Drag and Drop on JLabel?

Kefungsian Seret dan Lepas dengan Pengendalian Acara Tetikus Tersuai untuk JLabels

Anda berusaha untuk melaksanakan fungsi seret dan lepas dengan mengatasi acara tetikus pada JLabel tatasusunan bernama "Lakaran kecil." Walau bagaimanapun, anda telah memerhatikan bahawa pengendali acara yang dilepaskan tetikus tidak dicetuskan selepas mentakrifkan seret dan lepas dalam pengendali acara ditekan tetikus.

Memahami Isu

Dalam senario khusus ini, peristiwa pelepasan tetikus tidak didaftarkan kerana operasi seret dan lepas memintas peristiwa tetikus. Apabila anda menggunakan kaedah exportAsDrag dalam pengendali tetikusPressed, ia memulakan operasi seret, memakan peristiwa tetikus berikutnya dalam operasi yang sama.

Penyelesaian

Untuk menyelesaikan masalah ini, anda boleh mengalihkan logik seret dan lepas ke pengendali acara tetikusDragged yang berasingan. Ini memastikan acara pelepasan tetikus boleh dikendalikan secara bebas.

Kod Disemak:

<code class="java">Thumbnails[I_Loop].addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent me) {
        JComponent comp = (JComponent) me.getSource();
        TransferHandler handler = comp.getTransferHandler();
    }

    @Override
    public void mouseReleased(MouseEvent me) {
        System.out.println("here mouse released");
    }
});

Thumbnails[I_Loop].addMouseMotionListener(new MouseMotionAdapter() {
    @Override
    public void mouseDragged(MouseEvent me) {
        JComponent comp = (JComponent) me.getSource();
        TransferHandler handler = comp.getTransferHandler();
        handler.exportAsDrag(comp, me, TransferHandler.COPY);
    }
});</code>
Salin selepas log masuk

Dengan mengasingkan fungsi seret dan lepas ke dalam pengendali Dragged tetikus khusus, anda boleh mengekalkan gelagat yang diingini dan memastikan peristiwa pelepasan tetikus dikendalikan dengan betul untuk tatasusunan JLabel anda.

Nota Tambahan:

  • Pertimbangkan untuk menggunakan pelaksanaan Boleh Dipindahkan untuk mentakrifkan data yang dipindahkan semasa operasi seret dan lepas.
  • Teroka pilihan tambahan untuk fungsi seret dan lepas, seperti menggunakan JLayeredPane atau MouseMotionListener.

Atas ialah kandungan terperinci Bagaimana untuk Mendayakan Pengendalian Acara MouseRelease Selepas Seret dan Lepas pada JLabel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan