我对程序的结构不清楚,不知每一不要做什么?有什么用?控件,监听器,事件,类,接口之间的关系
不太明白,敲了很多程序了,一知半解.我自学java,真难.
愿各位大虾指教.这是程序结构:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
class MouseTest
{
public static void main(String[] args){  }  
}class MFrame extends JFrame
{
public MFrame(){  }

}class MPanel extends JPanel
{
   public MPanel(){ }
        
   public void paintComponent(Graphics g){  }   public Rectangle2D find(Point2D p){  }
  
   public void add(Point2D p){   }
   
   public void remove(Rectangle2D s){  }
   
  
   private static final int d = 10;
   private ArrayList<Rectangle2D> squares;
   private Rectangle2D current;
      private class MouseHandler extends MouseAdapter
   {
      public void mousePressed(MouseEvent event){  }      public void mouseClicked(MouseEvent event){  }
      
    }   private class MouseMotionHandler implements MouseMotionListener
      
    {
        public void mouseMoved(MouseEvent event){ }        public void mouseDragged(MouseEvent event){  }
  
    }
}这是所有代码:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.geom.*;
class MouseTest{
public static void main(String[] args){
MFrame f=new MFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);

    }
}class MFrame extends JFrame{
public MFrame(){
setTitle("MouseTest");
    setSize(300,200);

    MPanel p=new MPanel();
    add(p);
}
}class MPanel extends JPanel
{
   public MPanel()
   {
      squares=new ArrayList<Rectangle2D>();
      current=null;
      addMouseListener(new MouseHandler());
      addMouseMotionListener(new MouseMotionHandler());
   }   public void paintComponent(Graphics g)
   {
     super.paintComponent(g);
     Graphics2D g2=(Graphics2D)g;     for(Rectangle2D r:squares)
         g2.draw(r);
   }  
   public Rectangle2D find(Point2D p)
   {
      for(Rectangle2D r:squares){
       if(r.contains(p))return r;
      }
      return null;
   }  
   public void add(Point2D p)
   {
      double x=p.getX();
      double y=p.getY();
      
      current = new Rectangle2D.Double(x-d/2,y-d/2,d,d);
      squares.add(current);
      repaint();
   }   public void remove(Rectangle2D s)
   {
      if(s==null)return;
      if(s==current)current=null;
      squares.remove(s);
      repaint();
   }
   private static final int d = 10;
   private ArrayList<Rectangle2D> squares;
   private Rectangle2D current;
      private class MouseHandler extends MouseAdapter
   {
      public void mousePressed(MouseEvent event)
      {
         
         current=find(event.getPoint());
         if(current==null)
            add(event.getPoint());
      }      public void mouseClicked(MouseEvent event)
      {
        
         current=find(event.getPoint());
         if(current!=null&&event.getClickCount()>=2)
             remove(current);
      }
   }   private class MouseMotionHandler
      implements MouseMotionListener
   {
      public void mouseMoved(MouseEvent event)
      {
         
           if(find(event.getPoint())==null)
              setCursor(Cursor.getDefaultCursor());
           else
              setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));   
      }      public void mouseDragged(MouseEvent event)
      {
         if(current!=null){
          int x=event.getX();
          int y=event.getY();
         
          current.setFrame(x-d/2,y-d/2,d,d);
          repaint();
         
         }
      }
   }
}