请问这个程序中是如何把监视器中的x y传入到画布上的? final MyPanel mp = (MyPanel) e.getSource();这段代码是什么意思?

import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Color;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class MyFrame extends JFrame {
MyPanel panel;

MyFrame() {
    panel = new MyPanel();
    this.setBounds(500, 500, 600, 600);
    panel.addMouseListener(new Draw()); // 为面板添加鼠标监听器
    this.add(panel);
    this.setVisible(true);
}

public static void main(String[] args) {
    MyFrame mf = new MyFrame();
}

}

class MyPanel extends JPanel {
int judge = 0; // 判断鼠标点击状态
int x;
int y;

@Override
public void paint(Graphics g) {
    if (judge == 1) // 单击左键
    {
        g.setColor(Color.GREEN);
        g.fillOval(x, y, 50, 50);
    } else if (judge == 2) // 双击左键
    {
        g.setColor(Color.WHITE);
        super.paint(g);
    } else if (judge == 3) // 单击右键
    {
        g.setColor(Color.RED);
        g.fillRect(x, y, 50, 50);
    }
}

}

class Draw extends MouseAdapter {

static boolean f = false;
static int n = 1;

@Override
public void mouseClicked(MouseEvent e) { // 实现监听器

    final MyPanel mp = (MyPanel) e.getSource();

    mp.x = e.getX(); // 获取鼠标点击的位置,为画图确定坐标
    mp.y = e.getY();

    f = false;

    if (e.getButton() == e.BUTTON3) { // 单击右键
        n = 3;
        mp.judge = n;
        mp.repaint();
        n = 1;
        return;
    }

    else if (e.getButton() == e.BUTTON1) {

        if (n == 2) { // 双击左键
            mp.judge = n;
            mp.repaint();
            n = 1;
            f = true;
            return;
        }

        Timer timer = new Timer(); // 使用定时器来判断双击和单击左键

        timer.schedule(new TimerTask() {

            int num = 0;

            @Override
            public void run() {

                if (f) { // 判断双击事件是否已经执行,若已执行则取消定时器任务
                    num = 0;
                    n = 1;
                    this.cancel();
                    return;
                }

                if (num == 1) {
                    mp.judge = num; // 定时器再次执行,调用左键单击事件,然后取消定时器任务
                    mp.repaint();
                    f = true;
                    n = 1;
                    num = 0;
                    this.cancel();
                    return;
                }
                n++;
                num++;
            }
        }, new Date(), 150);
    }

}

}
请问这个程序中是如何把监视器中的x y传入到画布上的?
final MyPanel mp = (MyPanel) e.getSource();这段代码是什么意思?