鼠标按下 - >拖动 - >释放。在java中

时间:2011-11-17 17:31:36

标签: java swing mouse mouseevent drag-and-drop

对不起:

我只是不知道如何连接这些连续的操作?

鼠标按下然后拖动然后释放。如果用户不执行此操作,则不会执行某些操作...

我应该添加代码,因为已经按下来区分它吗?

常量MOUSE_MOVED不起作用,因为虽然我在mouse event api

中找到参数,但Eclipse告诉我它不知道它

我不知道发生了什么......请帮忙!

2 个答案:

答案 0 :(得分:6)

使用MouseInputListener子类实现MouseInputAdapter并处理mousePressed,mouseDragged和mouseReleased事件。

请查看此tutorial示例。

答案 1 :(得分:0)

这是一个封装拖动检测的简单类:

public abstract static class MouseDragListener {
    java.awt.Component component;
    MouseEvent dragStart;

    public MouseDragListener(java.awt.Component component) {
        super();
        this.component = component;
        component.addMouseMotionListener(new MouseAdapter() {
            public void mouseMoved(MouseEvent e) {

                dragStart = null;
            }

            public void mouseDragged(MouseEvent e) {
                if (dragStart == null)
                    dragStart = e;
            }
        });
        component.addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent e) {
                if (dragStart != null) {
                    dragReleased(dragStart, e);
                }
            }
        });
    }

然后使用:

new MouseDragListener(center){
    void dragReleased(MouseEvent start,MouseEvent end){
           //  do something ...
    }
}