2016-04-22 11 views
0

Ich arbeite an einer Swing-Anwendung, die auf einem Touchscreen-Linux-Tablet ausgeführt werden. Ich möchte ein Modul implementieren, in dem ich finde, in welche Richtung der Benutzer seinen Finger über den Bildschirm streicht. Ich benutze MouseMotionListener, um die Position der Maus zu finden. Aber jetzt verwirrend, wie ich die genaue Richtung der Mausbewegung finden kann. Ich wollte nur nach oben und unten auf jframe suchen. Kann mir jemand eine Idee dazu gebenSo finden Sie die Richtung des Swipe in Jframe

Antwort

0

ich diesen Beispielcode hinzufügen wollte Antwort darstellt @ camickr ist, da es helfen könnte - wie es als bearbeiten abgelehnt habe, und ich habe nicht genug Punkte, um Kommentare hinzuzufügen, hier ist es:

import javax.swing.*; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 

public class DragDirectionDemo { 

    public static void main(String[] args) { 

     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 

       JFrame frame = new JFrame("Drag Direction Demo"); 
       frame.setSize(500, 500); 
       frame.setVisible(true); 
       frame.addMouseListener(new MouseListener() { 

        float lastY = 0; 

        public void mouseReleased(MouseEvent e) { 
         System.out.println("Mouse released at " + e.getY()); 
         if (e.getY() < lastY) { 
          System.out.println("Upward swipe"); 
         } else if (e.getY() > lastY) { 
          System.out.println("Downward swipe"); 
         } else { 
          System.out.println("No movement"); 
         } 
         ; 
        } 

        public void mousePressed(MouseEvent e) { 
         System.out.println("Mouse clicked at " + e.getY()); 
         lastY = e.getY(); 
        } 

        public void mouseEntered(MouseEvent e) { 
        } 

        public void mouseExited(MouseEvent e) { 
        } 

        public void mouseClicked(MouseEvent e) { 
        } 
       }); 
      } 
     }); 
    } 
} 

Es ist nur ein Spielzeug-Beispiel, das den in @ camickrs Antwort erläuterten Ansatz veranschaulicht: Verfolgen der y-Koordinate, wenn die Bewegung beginnt (die Maustaste ist in meinem Beispiel gedrückt); dann, Vergleiche es mit der y-Koordinate, wenn die Bewegung beendet ist (Maustaste losgelassen, in meinem Beispiel - muss möglicherweise für Touch Touch, weiß ich nicht).

Beobachten Sie den Konsolenausgang, der angibt, wie die Bewegung aufgenommen wurde. Viel Glück!

+1

Dies ist ein perfektes Beispiel .. Ich habe eine Idee und werde dies entsprechend meinem Bedarf verbessern. Nochmals vielen Dank :) –

+0

@ user526206 Außer dem Moment, wenn Sie Ihrem Rahmen irgendwelche Steuerelemente hinzufügen, die dort einen eigenen 'MouseListener' verwenden, wird Ihr Rahmen nicht mehr über das Mausereignis benachrichtigt;). Die Antwort ist auch genau das, was Camicr in Codeform vorschlägt – MadProgrammer

1

Ich benutze MouseMotionListener, um die Position der Maus zu finden.

Ich denke, würde Sie den Überblick über zwei Mausevents halten müssen: (? Oder vielleicht das mouse Ereignis, das den Durchzug gestartet)

  1. die Vorveranstaltung
  2. das aktuelle Ereignis.

, damit Sie Zugriff auf die zwei Punkte haben, die von jedem Ereignis generiert werden.

Dann vergleichen Sie die beiden Punkte mit Grundrechenarten. Wenn der aktuelle y-Wert größer ist, wischen Sie nach unten, ansonsten nach oben.