As I think invalidate()
only flags your component to check sizes and layout. You should call repaint()
to repaint your pane.
Also I am wondering why you use propertyChangeListener for mouse clicks. I would prefer just simple mouse listener + MouseAdapter and MouseEvent x, y, buttons state.