关于鼠标监听器的实例应用

关于java中的鼠标监听器

	在java中,我们会看到各式各样的接口,今天我想讲一讲我最近新学到的鼠标监听器,既然叫监听器,
自然就可以监听鼠标的各种动作,但是它自身也是一种接口,需要被放置在一个类中,再由这个带接口的类来
帮助其实现监听的功能。
	关于鼠标监听器,具体功能如下:
void 功能
mouseClicked(MouseEvent e) 鼠标按键在组件上单击(按下并释放)时调用。
mouseEntered(MouseEvent e) 鼠标进入到组件上时调用。
mouseExited(MouseEvent e) 鼠标离开组件时调用。
mousePressed(MouseEvent e) 鼠标按键在组件上按下时调用。
mouseReleased(MouseEvent e) 鼠标按钮在组件上释放时调用。
	关于这些功能,我们可以用它来做一个画图板,来具体操作一下。
	首先,我们创建一个窗口作为画图板,然后给它附上各种属性;
//创建画图板窗口
	public void addui{
		JFrame drawui = new JFrame();
		drawui.setSize(900,800);
		drawui.setTitle("画图板");
		drawui.setLocationRelativeTo(null);
		drawui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
	既然要画图,那我们就需要一支画笔,于是
//创建画笔
		Graphics g= jpc.getGraphics();
	画笔在我们的窗口内作画,需要我们通过鼠标点击,按压与释放来完成绘制,自然就离不开鼠标监听器了,这时候
我们就需要创建一个类把监听器写进来了。于是
public class DrawListener implements MouseListener{
	 public void mousePressed(MouseEvent e){
	 }
	 public void mouseReleased(MouseEvent e){
	 }
}	 
	我们把监听器作为接口写入这个类,今天我们这里只讨论画直线这一种行为,我们需要在鼠标按下时的地点
与松开时的地点之间画一条直线,这个动作只与监听器中“按下”与“松开”两个动作有关,所以我们今天先只讲他们
写入,读者可以自行补充剩余动作指令。
	但是这个新创建的类中,没有画笔,所以我们还需要再创建一个对象
public class DrawListener implements MouseListener{
	Graphics gr ;
	 public void mousePressed(MouseEvent e){
	 }
	 public void mouseReleased(MouseEvent e){
	 }
	之后,经过思考,画笔作画,需要知道准确的坐标,才能够做出符合预期的图像,而如何得到我们的准确坐标
呢?这就要交给我们的鼠标监听器了。于是

int x1,x2,y1,y2;
 public void mousePressed(MouseEvent e){
    	x1 = e.getX();
    	y1 = e.getY();
    	
    }

 public class DrawPad {
 	public void mouseReleased(MouseEvent e){
    	x2=e.getX();
    	y2 = e.getY();
    	gr.drawLine(x1,y1,x2,y2);
    }	
	在我们鼠标点下时,鼠标监听器会记录我们点下时的坐标,并将其赋给x1和y1,同理,在我们松开鼠标时,鼠标
监听器会将坐标赋给x2,y2,再让画笔gr在点(x1,y1)与(x2,y2)直接画一条直线。这样,我们的带鼠标监听器
的类就写完了,但是我们还需要把监听器插进原来的类中,于是,我们返回原来的类,插入监听器

	public void addui{
	JFrame drawui = new JFrame();
	drawui.setSize(900,800);
	drawui.setTitle("画图板");
	drawui.setLocationRelativeTo(null);
	drawui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	drawui.setVisible(true);
//实例化带接口的类
	DrawListener dl = new DrawListener();
	
//加入鼠标监听器*
	drawui.addMouseListener(dl);
//对接两个对象
	dl.gr = g;	
	}
}

//最后写入主程序,运行就可以了
public static void main(String[] args) {
			//实例化当前界面这个类,才能执行动作
			DrawPad dp = new DrawPad();
			dp.addUI();
			
		}
	

你可能感兴趣的:(关于鼠标监听器的实例应用)