import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class Drag extends JFrame {  public Drag(){
    super("new");
    MyCanvas1 canvas = new MyCanvas1();
    Container c;
    c=getContentPane();
    c.setLayout(new BorderLayout());
    c.add(BorderLayout.CENTER,canvas);
    setSize(600,600);
    setVisible(true);
  }  public static void main(String args[]){
    Drag mta=new Drag();
    mta.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  }
}class MyCanvas1 extends Canvas implements MouseListener, MouseMotionListener
{  private static int xs, ys, xe, ye;
  private static boolean  rechteck;  public MyCanvas1(){
    rechteck=false;
    addMouseListener(this);
    addMouseMotionListener(this);
    setSize(300,300);
    setVisible(true);
  }
  public void paint(Graphics g) {
    draw(g);
  }  private void draw(Graphics g) {
    g.setColor(Color.red);
    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));
      }
    }
  }  private void clear(Graphics g) {
    if(rechteck){
      if (xs < xe) {
        if (ys < ye) {
          g.clearRect(xs,ys, (xe - xs), (ye - ys));
        }
        else {
          g.clearRect(xs, ye, (xe - xs), (ys - ye));
        }
      }
      else {
        if (ys < ye) {
          g.clearRect(xe, ys, (xs - xe), (ye - ys));
        }
        else {
          g.clearRect(xe, ye, (xs - xe), (ys - ye));
        }
      }
    }
  }
  public void update(Graphics g) {
    clear(g);
    paint(g);
  }  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) {
  }}