介绍:
MouseListener是监听鼠标信息的接口。
如何设置监听:
对监听者添加MouseListener接口,实现其所有方法,重写需要用到的方法对事件进行处理,最后对事件源注册监听。
代码实现:
确定事件源和监听者 —> 确定事件类型 —> 实现该类型接口 —> 事件处理方法(重写接口方法)—> 事件源注册监听(事件源添加监听者)
写一个程序,以在面板上按下鼠标的地方为起点,鼠标松开的地方为终点,画一个矩形。
界面分析:以界面为事件源,用面板监听,既然与鼠标点击有关,那肯定要实现鼠标监听接口,重写接口中按下和松开的方法,用get方法获得两个位置的坐标作为起点终点坐标。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Graphics_4 extends JFrame{
MyPanel4 mp;
public static void main(String[] args) {
Graphics_4 a=new Graphics_4();
}
Graphics_4()
{
mp=new MyPanel4();
this.add(mp);
this.addMouseListener(mp); //界面为事件源,面板为监听器
this.setTitle("我的小程序");
this.setSize(400, 300);
this.setLocation(100, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class Rec1 //创建一个矩形类
{
int x,y,x1,y1; //起点和终点坐标
}
class MyPanel4 extends JPanel implements MouseListener //实现鼠标监听接口
{
Rec1 rec;
MyPanel4()
{
rec=new Rec1();
}
@Override
public void paint(Graphics g) //重写JPanel的制图方法
{
super.paint(g);
drawRec(rec.x-10,rec.y-40,rec.x1-rec.x,rec.y1-rec.y,g);
}
public void drawRec(int x1,int y1,int x2,int y2,Graphics g) //绘制矩形的方法
{
System.out.println("drawRec");
g.setColor(Color.RED);
g.drawRect(x1, y1, x2, y2);
}
//鼠标点击
@Override
public void mouseClicked(MouseEvent e) {
}
//鼠标进入
@Override
public void mouseEntered(MouseEvent e) {
}
//鼠标离开
@Override
public void mouseExited(MouseEvent arg0) {
}
//鼠标按下
@Override
public void mousePressed(MouseEvent e1) { //鼠标按下时,让矩形起点坐标等于按下的坐标
rec.x=e1.getX(); //利用get获得坐标
rec.y=e1.getY();
}
//鼠标松开
@Override
public void mouseReleased(MouseEvent e2) { ////鼠标松开时,让矩形终点坐标等于按下的坐标
rec.x1=e2.getX(); //利用get获得坐标
rec.y1=e2.getY();
repaint();
}
}
欢迎各位在评论区留言探讨~~