> Java > java지도 시간 > 본문

Java에서 JLabel 드래그 앤 드롭에 대해 MouseReleased 이벤트가 작동하는지 확인하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-24 00:26:02
원래의
667명이 탐색했습니다.

How to Ensure MouseReleased Event Works for JLabel Drag-and-Drop in Java?

드래그 앤 드롭을 위한 JLabel 마우스 이벤트

JLabel과 함께 마우스 이벤트를 사용하면 드래그 앤 드롭 기능이 허용되지만 다음과 같은 문제가 발생할 수 있습니다. mousePressed 이벤트에 드래그 앤 드롭이 정의된 경우 mouseReleased가 예상대로 작동하지 않는 문제.

문제를 이해하려면 mousePressed에서 드래그 앤 드롭 기능을 정의할 때 전송을 시작한다는 점에 유의하는 것이 중요합니다. 프로세스. 이는 mouseReleased를 포함한 모든 후속 이벤트가 예상대로 처리되지 않을 수 있음을 의미합니다.

제공된 코드에서:

<code class="java">            public void mousePressed(MouseEvent me) {
                ...
                handler.exportAsDrag(comp, me, TransferHandler.COPY);
            }</code>
로그인 후 복사

exportAsDrag를 호출하면 드래그 앤 드롭 작업이 시작됩니다. 다른 마우스 이벤트보다 우선합니다. 결과적으로 끌어서 놓기 작업을 완료해야 하는 mouseReleased와 같은 후속 이벤트는 트리거되지 않습니다.

대안:

두 가지 대체 접근 방식을 사용할 수 있습니다. 이 문제 해결:

  1. MouseMotionListener 사용:

    <code class="java">     addMouseMotionListener(new MouseMotionAdapter() {
             @Override
             public void mouseDragged(MouseEvent e) {
                 // Handle drag operation
             }
         });</code>
    로그인 후 복사

    이 접근 방식은 드래그 작업과 버튼 누름을 분리하여 mouseReleased가 작동하도록 합니다. 예상대로입니다.

  2. JComponent.setTransferHandler를 사용하고 mouseReleased에서 드래그 앤 드롭을 시작합니다:

    <code class="java">     setTransferHandler(new TransferHandler("text"));
    
         addMouseListener(new MouseAdapter() {
             @Override
             public void mouseReleased(MouseEvent e) {
                 if (e.isControlDown()) {
                     getTransferHandler().exportAsDrag(this, e, TransferHandler.COPY);
                 }
             }
         });</code>
    로그인 후 복사

    여기서 전송 핸들러는 다음과 같습니다. JLabel에 설정하고 mouseReleased 중에 Ctrl 키를 눌렀을 때만 드래그 작업이 시작되므로 mouseReleased가 의도한 대로 작동할 수 있습니다.

위 내용은 Java에서 JLabel 드래그 앤 드롭에 대해 MouseReleased 이벤트가 작동하는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!