根本就没有任何组件注册鼠标事件监听器啊,
如果是监听frame的鼠标事件
则this.addMouseListener(this);
事件的事件源必须是Component的子类

解决方案 »

  1.   

    楼上正解,没有注册鼠标监听器。
    还有,楼主你实现这么多方法干什么,直接用MouseAdapter不是更方便?
      

  2.   

    import java.lang.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class drag extends JFrame implements MouseListener, MouseMotionListener

    private static int xs, ys, xe, ye;
    private static boolean  rechteck;
    public drag(){
    super("new");
    rechteck=false;
    addMouseListener(this);      //监听鼠标事件
    addMouseMotionListener(this);   //监听鼠标动作事件
    setSize(300,300);
    setVisible(true);
    }
    public void paint(Graphics g)
    {
    super.paint(g);
    g.setColor(Color.red);
    int xs=20;
    if(rechteck){
    if (xs < xe)
    {
    if (ys < ye) g.drawRect(xs, ys, (xe - xs), (ye - ys));
    else g.drawRect(xs, ye, (xe - xs), (ys - ye));
    }
    else
    {
    if (ys < ye) g.drawRect(xe, ys, (xs - xe), (ye - ys));
    else g.drawRect(xe, ye, (xs - xe), (ys - ye));
    }}
    }
    public void mousePressed(MouseEvent e) 
    {
    e.consume();
    xs = e.getX();
    ys = e.getY();
    }
    public void mouseReleased(MouseEvent e)
    {
    e.consume();
    rechteck = false;
    repaint();
    }
    public void mouseEntered(MouseEvent e)
    {
    }
    public void mouseExited(MouseEvent e)
    {
    }
    public void mouseClicked(MouseEvent e) 
    {
    }
    public void mouseDragged(MouseEvent e)
    {
    e.consume();
    xe = e.getX();
    ye = e.getY();
    rechteck=true;
    repaint();
    }
    public void mouseMoved(MouseEvent e)
    {
    }
    public static void main(String args[])
    {
                drag mta=new drag();
                mta.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
    }