把c.repaint()去掉.把Paint()中的内容移到mouseReleased中,我改的.import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame{
  private JLabel statusBar;
  private Container c;
  private int x1,y1,x2,y2;
  public Test(){
    super("Mouse Test");
    c = getContentPane();
    statusBar = new JLabel();
    c.add(statusBar,BorderLayout.SOUTH);
    addMouseListener(new MouseAdapter(){
      public void mousePressed(MouseEvent e){
        x1=e.getX();
        y1=e.getY();
      }
      public void mouseReleased(MouseEvent e){
        x2=e.getX();
        y2=e.getY();
        Graphics g = Test.this.getGraphics();
        g.drawRect(((x2>=x1)?x1:x2),((y2>=y1)?y1:y2),Math.abs(x2-x1),Math.abs(y2-y1));        statusBar.setText("the area is:"+(Math.abs(x2-x1)*Math.abs(y2-y1)));
//        c.repaint();
      }
    });
    setSize(400,400);
    show();
  }
  public void paint(Graphics g){
   
  }
  public static void main(String args[]){
    Test app = new Test();
    app.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        System.exit(0);
      }
    });
  }