我正在开发一个在触摸屏linux平板电脑上运行的swing应用程序。我想实现一个模块,在其中我发现用户在屏幕上滑动手指的方向。我正在使用MouseMotionListener来查找鼠标的位置。但现在我很困惑,我怎么能找到鼠标移动的确切方向。我只对在jframe上找到向上和向下移动感兴趣。有人可以给我一些想法
答案 0 :(得分:1)
我正在使用MouseMotionListener来查找鼠标的位置。
我猜你需要跟踪两个MouseEvents:
这样您就可以访问每个事件生成的两个点。
然后使用基本数学比较两点。如果当前的y值较大,则向下滑动,否则向上滑动。
答案 1 :(得分:0)
我想添加这个示例代码来说明@ camickr的答案,因为它可能会有所帮助 - 因为它被编辑拒绝了,而且我没有足够的点来添加评论,这里是:
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) {
}
});
}
});
}
}
这只是一个玩具示例,说明了@ camickr的答案中解释的方法:在动作开始时跟踪y坐标(按下鼠标按钮,在我的例子中);然后,将它与运动结束时的y坐标进行比较(在我的示例中释放鼠标按钮 - 可能需要调整触摸,我不知道)。
观察控制台输出,指示已拾取动作的内容。祝你好运!