@@ -50,21 +50,23 @@ class MouseEventListener extends MouseAdapter {
5050 public void mousePressed ( MouseEvent event ) {
5151 // draws the specificed shape
5252 // draw a line
53- if ( shapeType == 0 ){
54- currentShape = new Line ( event .getX (), event .getY (), event .getX (), event .getY (), currentColor );
53+ if (currentShape == null ){
54+ if ( shapeType == 0 ){
55+ currentShape = new Line ( event .getX (), event .getY (), event .getX (), event .getY (), currentColor );
56+ }
57+ // draw a rectangle
58+ else if ( shapeType == 1 ){
59+ currentShape = new Rectangle ( event .getX (), event .getY (), event .getX (), event .getY (),
60+ currentColor , isFilled );
61+ }
62+ // draw an oval
63+ else if ( shapeType == 2 ){
64+ currentShape = new Oval ( event .getX (), event .getY (), event .getX (), event .getY (),
65+ currentColor , isFilled );
66+ }
67+ // Tell JVM to call paintComponent( g )
68+ repaint ();
5569 }
56- // draw a rectangle
57- else if ( shapeType == 1 ){
58- currentShape = new Rectangle ( event .getX (), event .getY (), event .getX (), event .getY (),
59- currentColor , isFilled );
60- }
61- // draw an oval
62- else if ( shapeType == 2 ){
63- currentShape = new Oval ( event .getX (), event .getY (), event .getX (), event .getY (),
64- currentColor , isFilled );
65- }
66- // Tell JVM to call paintComponent( g )
67- repaint ();
6870 }
6971
7072 /* This method checks for a mouse release to indicate the shape has been finished. This method accepts 1
@@ -73,27 +75,34 @@ else if ( shapeType == 2 ){
7375 @ Override
7476 public void mouseReleased ( MouseEvent event ) {
7577 // Update ending coordinates
76- currentShape .setX2 ( event .getX () );
77- currentShape .setY2 ( event .getY () );
78- currentShape .setColor ( currentColor );
79-
80- // add the new shape to the END of the LinkedList
81- shapeList .addLast ( currentShape );
82-
83- // Get ready for the next line to be drawn
84- currentShape = null ;
85- repaint ();
78+ if (currentShape != null ){
79+ currentShape .setX2 ( event .getX () );
80+ currentShape .setY2 ( event .getY () );
81+ currentShape .setColor ( currentColor );
82+
83+ // add the new shape to the END of the LinkedList
84+ shapeList .addLast ( currentShape );
85+
86+ // Get ready for the next line to be drawn
87+ currentShape = null ;
88+ repaint ();
89+
90+ // clear the redo stack
91+ redoStack .clear ();
92+ }
8693 }
8794
8895 /* This method updates the ending coordinates of currentShape and statusLabel as the mouse is dragged.
8996 * This method accepts 1 parameter: a reference to a MouseEvent object. This method returns no values.
9097 */
9198 @ Override
9299 public void mouseDragged ( MouseEvent event ) {
93- currentShape .setX2 ( event .getX () );
94- currentShape .setY2 ( event .getY () );
95- statusLabel .setText ( String .format ( "(%d, %d)" , event .getX (), event .getY () ) );
96- repaint ();
100+ if (currentShape != null ){
101+ currentShape .setX2 ( event .getX () );
102+ currentShape .setY2 ( event .getY () );
103+ statusLabel .setText ( String .format ( "(%d, %d)" , event .getX (), event .getY () ) );
104+ repaint ();
105+ }
97106 }
98107
99108 /* This method updates the statusLabel as the mouse is moved. This method accepts 1 parameter: a reference to
0 commit comments