java鼠标点击事件实现画圆画方


/* 7.编写Java程序,创建一个窗体,并实现交互。
 *在窗体内“单击鼠标左键”,在光标处绘制一个“红色圆”;
 *窗体内“单击鼠标右键”,在光标处绘制一个“绿色方框”;
 *窗体内“双击鼠标左键”,清空所有已画“圆”和“方”。
 */
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class CircleSquare extends JFrame {
     myPanel mp=new myPanel();
     CircleSquare (){
         this.setBounds(100,100,200,200);
         this.setTitle("左键画圆,右键画方");
         this.add(mp);
      
         this.getContentPane().addMouseListener(new draw());
     }
    public static void main(String[] args) {
           CircleSquare frm=new  CircleSquare ();
           frm.setVisible(true);
     }
     class myPanel extends JPanel{
         int a=0;//判断鼠标点击状态
         int x,y;//判断位置
         public void paint(Graphics g){
          if(a==1){
               g.setColor(Color.RED);//点击左键,画红色圆
               g.fillOval(x,y,10,10);
          }
             else if(a==2){//双击清除
                 g.setColor(Color.WHITE);
                 super.paint(g);
             }
             else if(a==3){//单机右键,画方框
             g.setColor(Color.GREEN);
             g.drawRect(x,y,10,10);
              }
          }
     }
     class draw extends MouseAdapter{
         public void mouseClicked(MouseEvent e){
             final myPanel mp=(myPanel)e.getSource();
             mp.x=e.getX();
             mp.y=e.getY();
             if(e.getButton()==e.BUTTON1){//单击左键
             mp.a=1;
                 if(e.getClickCount() == 2){//双击
                 mp.a=2;
                 }
             mp.repaint();
             }
             else if(e.getButton()==e.BUTTON3){//单击右键
                 mp.a=3;
             mp.repaint();
             }
      }
}
}

这个运行出来只是一个窗体,鼠标点击毫无反应,想知道哪里出问题了,我是四处搜集资料写的这个程序, 什么都不懂,感觉是不是监听器没有发挥作用啊

img

 class draw extends MouseAdapter{
        public void mouseClicked(MouseEvent e){
            //你这个地方错了,这个地方这句注释掉就好了
            //final myPanel mp=(myPanel)(e.getSource());
            mp.x=e.getX();
            mp.y=e.getY();


if(a==1){
这里下断点,看看代码有没有触发

报错信息不完整,发个完整的