java 鼠标拖动事件

Python074

java 鼠标拖动事件,第1张

实现方法很多,也没说用什么写,我用javascript 花大半小时替你写了一个。

请把下面代码保存到html或jsp文件里,然后用IE打开。(如果IE的上方出现提示,要右键选择允许运行script)

<html>

<head>

<script type="text/javascript">

function show_coorddown(event)

{

x=event.clientX

y=event.clientY

document.getElementById("txtHint1").innerHTML="X坐标"+x+"\n\n\n"+"Y坐标"+y

document.getElementById("txtHint1").value=x

}

function show_coordup(event)

{

x=event.clientX

y=event.clientY

document.getElementById("txtHint2").innerHTML="X坐标"+x+"\n\n\n"+"Y坐标"+y

if(x>document.getElementById("txtHint1").value)

document.getElementById("txtHint3").innerHTML="向右移动了"

else if(x<document.getElementById("txtHint1").value)

document.getElementById("txtHint3").innerHTML="向左移动了"

else

document.getElementById("txtHint3").innerHTML="木有移动"

}

</script>

</head>

<body onmousedown="show_coorddown(event)" onmouseup="show_coordup(event)">

<p>请在页面中点击。一个消息框会提示出鼠标指针的 x 和 y 坐标。</p>

<p>按下坐标:<span id="txtHint1" value=""></span></p>

<p>松开坐标:<span id="txtHint2"></span></p>

<p>结果检测:<span id="txtHint3"></span></p>

<p><span></span></p>

</body>

</html>

this.addMouseListener(new

MouseAdapter()

{

@Override

public

void

mousePressed(MouseEvent

e)

{

x

=

e.getX()

y

=

e.getY()

System.out.println("Xbefore:"+e.getX())

}

})

this.addMouseMotionListener(new

MouseMotionListener()

{

public

void

mouseDragged(MouseEvent

e)

{

JButton

btn

=

(JButton)

e.getSource()

setLocation(btn.getX()

+

e.getX()

-

x,

btn.getY()

+

e.getY()

-

y)

}

public

void

mouseMoved(MouseEvent

e)

{

}

})

上面的代码是给JButton添加的鼠标事件,移动的是按钮。。。

这需要对鼠标事件有一定的了解,首先实现鼠标按下和抬起两个事件,按下时记录矩形的起始位置,抬起时记录矩形的最终位置,两个坐标值相减,得到矩形的高度和宽度即可最终确定一个矩形,画出来。

另外最重要的部分是实现拖动痕迹的处理,需要实现的的鼠标拖动的事件(具体可以进行判断比如按住左键拖动,右键拖动等),还记得鼠标按下的事件记录的矩形其实位置吧,拖动事件需要记录当前矩形的位置,两个坐标值相减,得到矩形的高度和宽度即可最终确定一个矩形,画出来。

问题就来了,那就是有两个矩形了,这时在鼠标抬起的事件中删除一个拖动痕迹的矩形。