Java拖曳鼠标实现画线功能的方法
本文实例主要实现Java拖曳鼠标画线的功能,为了达到画线的功能,分别用implementsMouseListener与MouseMotionListener,并且由mousePressed(),mouseReleased()取得鼠标拖曳的开始与结束坐标。这是一个掌握Java鼠标事件的很好的范例。
具体实现代码如下:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassMouseDemoextendsJFrameimplementsMouseListener,
MouseMotionListener{
intflag;//flag=1代表MouseMoved,flag=2代表MouseDragged
intx=0;
inty=0;
intstartx,starty,endx,endy;//起始坐标与终点坐标
publicMouseDemo(){
ContainercontentPane=getContentPane();
contentPane.addMouseListener(this);
contentPane.addMouseMotionListener(this);
setSize(300,300);
show();
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
/*由mousePressed(),mouseReleased()取得鼠标拖曳的开始与结束坐标*/
publicvoidmousePressed(MouseEvente){
startx=e.getX();
starty=e.getY();
}
publicvoidmouseReleased(MouseEvente){
endx=e.getX();
endy=e.getY();
}
publicvoidmouseEntered(MouseEvente){
}
publicvoidmouseExited(MouseEvente){
}
publicvoidmouseClicked(MouseEvente){
}
/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/
publicvoidmouseMoved(MouseEvente){
flag=1;
x=e.getX();
y=e.getY();
repaint();
}
publicvoidmouseDragged(MouseEvente){
flag=2;
x=e.getX();
y=e.getY();
repaint();
}
publicvoidupdate(Graphicsg){
g.setColor(this.getBackground());
g.fillRect(0,0,getWidth(),getHeight());//清除当前的窗口内容
paint(g);
}
publicvoidpaint(Graphicsg){
g.setColor(Color.black);
if(flag==1){
g.drawString("鼠标坐标:("+x+","+y+")",10,50);
g.drawLine(startx,starty,endx,endy);
}
if(flag==2){
g.drawString("拖曳鼠标价坐标:("+x+","+y+")",10,50);
g.drawLine(startx,starty,x,y);
}
}
publicstaticvoidmain(String[]args){
newMouseDemo();
}
}
该程序在画线过程中,拖拽时会显示鼠标坐标。读者还可以根据自身需求对该程序进行修改和完善,使之更加具有实用性。