import java.awt.*;
import java.awt.Event.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;
public class MouseTest {
public static void main(String[] args) {
MouseFrame frame= new MouseFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }}
class MouseFrame extends JFrame
{
public MouseFrame()
{
setTitle("Mouse Test");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);

MousePanel panel = new MousePanel();
add(panel);

}
public static final int DEFAULT_WIDTH=400;
public static final int DEFAULT_HEIGHT=400;
}
class MousePanel extends JPanel
{
public MousePanel()
{
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-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
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 SIDELENGTH=10;
private ArrayList<Rectangle2D> squares;
private Rectangle2D current;

private class MouseHandler extends MouseAdapters
{
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-SIDELENGTH,y-SIDELENGTH,SIDELENGTH,SIDELENGTH);
   repaint();
   }
   }
}}报错内容为:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method addMouseListener(MouseListener) in the type Component is not applicable for the arguments (MousePanel.MouseHandler)
The method addMouseMotionListener(MouseMotionListener) in the type Component is not applicable for the arguments (MousePanel.MouseMotionHandler)
MouseAdapters cannot be resolved to a type
MouseEvent cannot be resolved to a type
MouseEvent cannot be resolved to a type
MouseMotionListener cannot be resolved to a type
MouseEvent cannot be resolved to a type
MouseEvent cannot be resolved to a type at MousePanel.<init>(MouseTest.java:44)
at MouseFrame.<init>(MouseTest.java:28)
at MouseTest.main(MouseTest.java:12)

解决方案 »

  1.   

    Java 区分大小写哦,你检查一下拼写啊。
      

  2.   

    package my.test;import java.awt.Cursor;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.util.ArrayList;import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class haha {    
        public static void main(String[] args) {
            MouseFrame frame= new MouseFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);    }}
    class MouseFrame extends JFrame
    {
        public MouseFrame()
        {
        setTitle("Mouse Test");
        setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
        
        MousePanel panel = new MousePanel();
        add(panel);
        
        }
        public static final int DEFAULT_WIDTH=400;
        public static final int DEFAULT_HEIGHT=400;
    }
    class MousePanel extends JPanel
    {
        public MousePanel()
        {
            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-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
            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 SIDELENGTH=10;
        private ArrayList<Rectangle2D> squares;
        private Rectangle2D current;
        
        private class MouseHandler extends java.awt.event.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-SIDELENGTH,y-SIDELENGTH,SIDELENGTH,SIDELENGTH);
               repaint();
           }
       }
    }}上面的可以了,你好像添加的import不够^_^
      

  3.   

    其实只要改两处地方就可以了:
    1.private class MouseHandler extends MouseAdapters =>MouseAdapter2.楼主导包时请看仔细:
    import java.awt.Event.*;这个Event是个类
    下面才真确
    import java.awt.event.*;
      

  4.   

    直接使用快捷键:Ctrl+Shift+O,就会自动导入所有的类。
      

  5.   

    用LZ的代码测试了一下,两个问题:1. 拼写错误: private class MouseHandler extends MouseAdapters
       根本就不存在MouseAdapters这样的一个类,应该是MouseAdapter2. MouseEvent相关的类没有被import进来。
        加入  import java.awt.event.MouseAdapter;
             import java.awt.event.MouseEvent;
             import java.awt.event.MouseMotionListener;
       就可以了。至于import java.awt.Event.*;这个语句可以不要。如果LZ用的是eclipse之类的开发工具的话,我觉得应该会很容易找到问题所在的呀。因为都有提示你的。