Skip to content

Commit a81dfe5

Browse files
authored
Add files via upload
1 parent e50b532 commit a81dfe5

File tree

1 file changed

+37
-28
lines changed

1 file changed

+37
-28
lines changed

PaintPanel.java

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)