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

mac2024-12-16  24

关于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(); }
最新回复(0)