Hi everyone :))))
there is a problem here !this code should draw a rectangle whenever I presse on the mouse ! but actually it doesn't do that !!
when I execute the prog. it gives me the frame window ! but when I presse the mouse ,it should draw a rectangle !
but in fact it doesn't draw anything !!
so what is the wrong with my code ??!
thanks :)

import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class VectorDraw extends JPanel {
private Point P1,P2;
private Vector V;
private Boolean flag ;
private Rectangle CurrRect,NewRect;
public VectorDraw(){
P1=new Point (0,0); 
P2=new Point (0,0); 
V=new Vector ();
Inner1 Handler1=new Inner1 ();
Inner2 Handler2=new Inner2 ();

addMouseListener(Handler1 );
addMouseMotionListener (Handler2 );
}
private class Inner1 extends MouseAdapter {
    public void mousePressed(MouseEvent E){
    P1=E.getPoint();

    }

    public void mouseReleased(MouseEvent E){
        P2=E.getPoint();//why !!
        NewRect=new Rectangle (Math.min(P1.x,P2.x),Math.min(P1.y,P2.y),
                Math.abs(P1.x-P2.x),Math.abs(P1.y-P2.y)
                );
        //flag=false;
        V.add(NewRect);
        repaint();

        }

} 
private class Inner2 extends MouseMotionAdapter {
    public void  mouseDragged(MouseEvent E){
        P2=E.getPoint();
        CurrRect=new Rectangle (Math.min(P1.x,P2.x),Math.min(P1.y,P2.y),
                Math.abs(P1.x-P2.x),Math.abs(P1.y-P2.y)
                );
        flag=false;
        repaint();

        }

}
public void paintComponent(Graphics g){
    super.paintComponent(g);
g.setColor(Color.BLUE);
for (int i=0;i<V.size();i++){
    //= new Rectangle ();
    Rectangle R;
    R=(Rectangle)V.get(i);
    g.drawRect(R.x, R.y, R.width, R.height);


}
g.setColor(Color.RED);
if (!flag){
    g.drawRect(CurrRect.x, CurrRect.y, CurrRect.width, CurrRect.height);


}



}
    public static void main(String[] args) {
        VectorDraw O=new VectorDraw();
        JFrame obj=new JFrame();
        obj.setSize (600,600);
        obj.setVisible(true);
        obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

Edited 1 Year Ago by shahera.arafat

This question has already been answered. Start a new discussion instead.