鱼C论坛

 找回密码
 立即注册
查看: 3646|回复: 7

[已解决]关于mouseevent事件的大疑惑

[复制链接]
发表于 2017-5-24 17:17:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
又来麻烦各位大佬了!!!!那个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-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接口,而这里面只有两个方法。在里面设置按钮移动就可以了,经测试是可以跟着鼠标移动的,不知道我这个方法对不对,多多指教,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-24 18:02:19 | 显示全部楼层
这里有个例子详细说明

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

其实 Java 中的 GUI 编程没有必要去学习,我看你发的好多帖都跟这有关,你一直在研究 Java 的界面???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-24 23:33:23 | 显示全部楼层
零度非安全 发表于 2017-5-24 18:02
这里有个例子详细说明

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

哎,最近是的,因为我们老师给我们这学期java项目就是坦克作战,太难的我也不会.......就做下界面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-24 23:38:31 | 显示全部楼层
零度非安全 发表于 2017-5-24 18:02
这里有个例子详细说明

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

对不起我太菜了......请问那个案例怎么运行,恩,我不知道main函数应该加在哪里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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接口,而这里面只有两个方法。在里面设置按钮移动就可以了,经测试是可以跟着鼠标移动的,不知道我这个方法对不对,多多指教,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-26 14:02:42 | 显示全部楼层
xw0314 发表于 2017-5-25 14:47
其实我也不懂这个,刚才查了下JDK API就知道了,MouseMotionAdapter类实现了MouseMotionListener接 ...

感谢,但是移动得为什么不灵敏哪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-27 14:20:02 | 显示全部楼层
十六是只仙 发表于 2017-5-26 14:02
感谢,但是移动得为什么不灵敏哪

反正你要移动的代码就是在那个方法里面了,具体的我也不太清楚。没有学Java的GUI,不好意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-27 14:23:05 | 显示全部楼层
十六是只仙 发表于 2017-5-26 14:02
感谢,但是移动得为什么不灵敏哪

版主给的那个案例里面有写按钮移动的代码,而且有计算坐标的位置,你可以参考下,把它修改好放进那个鼠标按下拖拽事件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 13:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表