请把下面代码保存到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(newMouseAdapter()
{
@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添加的鼠标事件,移动的是按钮。。。
这需要对鼠标事件有一定的了解,首先实现鼠标按下和抬起两个事件,按下时记录矩形的起始位置,抬起时记录矩形的最终位置,两个坐标值相减,得到矩形的高度和宽度即可最终确定一个矩形,画出来。另外最重要的部分是实现拖动痕迹的处理,需要实现的的鼠标拖动的事件(具体可以进行判断比如按住左键拖动,右键拖动等),还记得鼠标按下的事件记录的矩形其实位置吧,拖动事件需要记录当前矩形的位置,两个坐标值相减,得到矩形的高度和宽度即可最终确定一个矩形,画出来。
问题就来了,那就是有两个矩形了,这时在鼠标抬起的事件中删除一个拖动痕迹的矩形。