十六是只仙 发表于 2017-5-24 17:17:13

关于mouseevent事件的大疑惑

又来麻烦各位大佬了!!!!那个Mouseevent事件其中鼠标按着按钮,就可以让按钮移动!!!应该怎么实现,渣新毫无想法,求教!!!!!

(这是我随意的一些代码......求教)




package mouse;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class mouse_demo extends JFrame implements MouseListener {
        JPanel mp = null;
        JButton j1 = null;
        int x = 15;
        int y = 15;
        public static void main(String[] args) {
                mouse_demo mo = new mouse_demo();
               
        }
   public mouse_demo() {
        mp = new JPanel();
        j1 = new JButton("移动");
       
       
        this.setSize(500, 500);
        this.setTitle("min");
        this.add(mp);
        j1.setBounds(15, 15, 50, 50);
        this.getContentPane().add(j1);
    this.getContentPane().setLayout(null);

    j1.addMouseMotionListener(new MouseMotionAdapter() {
            public void translatePoint(int x,int y){
                    x =15+x;
                    y = 15+y;
            }
        });
   
       
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        this.setVisible(true);
       
       
       
        }
   

        @Override
        public void mouseClicked(MouseEvent e) {
               
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

       
}

零度非安全 发表于 2017-5-24 18:02:19

这里有个例子详细说明

https://wenku.baidu.com/view/9a4c52fd284ac850ad0242e2.html

其实 Java 中的 GUI 编程没有必要去学习,我看你发的好多帖都跟这有关,你一直在研究 Java 的界面???

十六是只仙 发表于 2017-5-24 23:33:23

零度非安全 发表于 2017-5-24 18:02
这里有个例子详细说明

https://wenku.baidu.com/view/9a4c52fd284ac850ad0242e2.html


哎,最近是的,因为我们老师给我们这学期java项目就是坦克作战,太难的我也不会.......就做下界面
{:10_266:}

十六是只仙 发表于 2017-5-24 23:38:31

零度非安全 发表于 2017-5-24 18:02
这里有个例子详细说明

https://wenku.baidu.com/view/9a4c52fd284ac850ad0242e2.html


对不起我太菜了......请问那个案例怎么运行,恩,我不知道main函数应该加在哪里

xw0314 发表于 2017-5-25 14:47:20

十六是只仙 发表于 2017-5-24 23:38
对不起我太菜了......请问那个案例怎么运行,恩,我不知道main函数应该加在哪里


import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MouseDemo extends JFrame implements MouseListener {

        JPanel mp = null;
        JButton j1 = null;
        int x = 15;
        int y = 15;

        public static void main(String[] args) {
                MouseDemo mo = new MouseDemo();
        }

        public MouseDemo() {
                mp = new JPanel();
                j1 = new JButton("移动");

                this.setSize(500, 500);
                this.setTitle("min");
                this.add(mp);
                j1.setBounds(15, 15, 50, 50);
                this.getContentPane().add(j1);
                this.getContentPane().setLayout(null);

                j1.addMouseMotionListener(new MouseMotionAdapter() {
//                        MouseMotionAdapter类里面只有以下两个方法
                        public void mouseDragged(MouseEvent e) {
//                        鼠标按键在组件上按下并拖动时调用。在释放鼠标按键前,鼠标拖动事件被连续地传递到首先发起该事件的组件(而不管鼠标位置是否处于该组件的边界内)。
//                                j1.move(e.getX(), e.getY());这个方法已经过时了
                                j1.setBounds(e.getX(), e.getY(), j1.getWidth(), j1.getHeight());
                        }
                       
                        public void mouseMoved(MouseEvent e) {
//                        鼠标按键在组件上移动(无按键按下)时调用。
                        }
                });

                this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                this.setVisible(true);
        }

        @Override
        public void mouseClicked(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }
}


其实我也不懂这个,刚才查了下JDK API就知道了,MouseMotionAdapter类实现了MouseMotionListener接口,而这里面只有两个方法。在里面设置按钮移动就可以了,经测试是可以跟着鼠标移动的,不知道我这个方法对不对,多多指教,谢谢

十六是只仙 发表于 2017-5-26 14:02:42

xw0314 发表于 2017-5-25 14:47
其实我也不懂这个,刚才查了下JDK API就知道了,MouseMotionAdapter类实现了MouseMotionListener接 ...

感谢,但是移动得为什么不灵敏哪

xw0314 发表于 2017-5-27 14:20:02

十六是只仙 发表于 2017-5-26 14:02
感谢,但是移动得为什么不灵敏哪

反正你要移动的代码就是在那个方法里面了,具体的我也不太清楚。没有学Java的GUI,不好意思

xw0314 发表于 2017-5-27 14:23:05

十六是只仙 发表于 2017-5-26 14:02
感谢,但是移动得为什么不灵敏哪

版主给的那个案例里面有写按钮移动的代码,而且有计算坐标的位置,你可以参考下,把它修改好放进那个鼠标按下拖拽事件
页: [1]
查看完整版本: 关于mouseevent事件的大疑惑