java吧 关注:1,290,722贴子:12,821,337
  • 8回复贴,共1

怎么让被鼠标拖动的图片移动到一定的距离后停止移动

只看楼主收藏回复

正在做毕业设计,在用Java写个小游戏。现在遇到个技术难题,希望吧里大神解答啊。
问题描述:鼠标拖动图片让图片朝水平或者垂直方向移动(已经实现),现在希望在原来的基础上,当图片被拖动超过一定的距离以后就停下来,在松开鼠标之前无法继续移动。
2楼附上该部分代码,有问题可以问我,希望大神帮忙解决!


IP属地:浙江1楼2013-09-26 22:06回复
    //初始化游戏控件private void initControls() {for (int i = 0; i < jLabelBox.length; i++) {final int index = i;//添加鼠标弹起的事件监听 ,用于判断鼠标按下到弹起期间不能做变相运动jLabelBox[index].addMouseListener(new MouseAdapter() {@Overridepublic void mouseReleased(MouseEvent e) {isReleased = true;}});//添加鼠标拖动图片的事件监听jLabelBox[index].addMouseMotionListener(new MouseAdapter() {int x, y, distance;@Overridepublic void mouseDragged(MouseEvent e) {//判断当前鼠标状态if (isReleased) {//鼠标刚刚按下,判断当前鼠标移动方向if (Math.abs(e.getX() - 20) > Math.abs(e.getY() - 20)) {isTransverse = true;//横向} else {isTransverse = false;//纵向}//将鼠标状态标记为按下,即非弹起isReleased = false;//同时将图片当前位置标记保留x = jLabelBox[index].getBounds().x;y = jLabelBox[index].getBounds().y;System.out.println(x + " " + y);}//System.out.println(isReleased);//System.out.println(isTransverse);//System.out.println(e.getX() + " " + e.getY());//System.out.println(jLabelBox[index].getBounds().x + " " + jLabelBox[index].getBounds().y);if (isTransverse) {//鼠标横向移动时操作jLabelBox[index].setBounds(jLabelBox[index].getBounds().x + e.getX() - 20,jLabelBox[index].getBounds().y,jLabelBox[index].getBounds().width,jLabelBox[index].getBounds().height);//限制图片移动距离不能超过相邻图片的位置//获取当前图片现在的位置和初始位置之间的距离distance = Math.abs(jLabelBox[index].getBounds().x - x);System.out.println(distance);//while(distance >= 50) {//distance = Math.abs(jLabelBox[index].getBounds().x - x);//System.out.println(distance);//}} else {//鼠标纵向移动时操作jLabelBox[index].setBounds(jLabelBox[index].getBounds().x,jLabelBox[index].getBounds().y + e.getY() - 20,jLabelBox[index].getBounds().width,jLabelBox[index].getBounds().height);}}});}}


    IP属地:浙江2楼2013-09-26 22:07
    回复
      2025-12-11 01:33:25
      广告
      不感兴趣
      开通SVIP免广告
      额。。。代码贴上来完全没格式了,我再附上图片吧


      IP属地:浙江3楼2013-09-26 22:10
      回复





        IP属地:浙江4楼2013-09-26 22:11
        回复
          在线等,先谢谢各位了


          IP属地:浙江5楼2013-09-26 22:12
          回复
            能给出思路或者解决方案就好,不一定要代码


            IP属地:浙江6楼2013-09-26 22:13
            回复
              之前我尝试在中间添加while语句,确实实现了图片无法拖动,但是程序陷入while中出不来了


              IP属地:浙江7楼2013-09-26 22:16
              回复
                参考下awt包。里面有很多处理的方法,Java图像这块有点鸡肋,处理一般还行吧。


                IP属地:北京来自Android客户端8楼2013-09-26 23:08
                回复
                  2025-12-11 01:27:25
                  广告
                  不感兴趣
                  开通SVIP免广告
                  鼠标当前坐标(x,y) 到 点击图片开始的坐标(x1,y1)的距离 大于 规定的距离 等于停止?!


                  9楼2013-09-26 23:24
                  回复