Heim > Java > javaLernprogramm > Hauptteil

Verhindert die Methode MousePressed, dass MouseReleased in JLabel Drag & Drop ausgelöst wird?

Mary-Kate Olsen
Freigeben: 2024-10-24 02:41:29
Original
851 Leute haben es durchsucht

Does MousePressed Method Inhibit MouseReleased from Triggering in JLabel Drag and Drop?

JLabel-Mausereignisse für Drag & Drop

Frage:

Implementieren von Drag & Drop für ein JLabel über Mausereignisüberschreibungen , wird das Ereignis „mouseReleased“ beim Loslassen der Maus nicht ausgelöst, wenn es innerhalb des Ereignisses „mousePressed“ definiert ist. Mache ich irgendetwas falsch? ist richtig, hier sind zwei alternative Ansätze zu berücksichtigen:

1. Verwendung von JLayeredPane:

<code class="java">Thumbnails[I_Loop].addMouseListener( new MouseAdapter() {
    public void  mouseReleased(MouseEvent me) {
           System.out.println("here mouse released");
      }
    public void mousePressed(MouseEvent me) {
        System.out.println("here mouse pressed");
        JComponent comp = (JComponent) me.getSource();
        TransferHandler handler = comp.getTransferHandler();
        handler.exportAsDrag(comp, me, TransferHandler.COPY);
    });</code>
Nach dem Login kopieren
Dieses Beispiel zeigt das Ziehen einer Komponente mit JLayeredPane , während ein neueres Beispiel einen ähnlichen Ansatz verwendet.

Code:

2. Verwendung von MouseMotionListener:

Dieser Code demonstriert die Verwendung eines MouseMotionListener. Dieses komplexere Beispiel verwendet das gleiche Prinzip.

Code:

<code class="java">// ...
private Point mousePt;
private Point dragPt;
private Rectangle bounds;

public MouseDragTest() {
    this.addMouseMotionListener(new MouseMotionAdapter() {

        @Override
        public void mouseDragged(MouseEvent e) {
            int dx = e.getX() - mousePt.x;
            int dy = e.getY() - mousePt.y;
            dragPt.setLocation(dragPt.x + dx, dragPt.y + dy);
            super.mouseDragged(e);
        }
    });
    this.addMouseListener(new MouseAdapter() {

        @Override
        public void mousePressed(MouseEvent e) {
            bounds = getBounds();
            Point p = SwingUtilities.convertPoint(this, e.getPoint(), Bounds.Parent);
            if (bounds.contains(p)) {
                dragPt = p;
                mousePt = e.getPoint();
            }
        }
    });
    // ...
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVerhindert die Methode MousePressed, dass MouseReleased in JLabel Drag & Drop ausgelöst wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage