/** * RepaintApplet2a.java * A somewhat better approach than RepaintApplet1.java. * update() is overriden to prevent it covering everything with the background color * before calling paint(). The overriden version just calls paint() only. * So every mouse release leaves a circle. */ import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class RepaintApplet2a extends Applet { int mouseX = -10; int mouseY = -10; public void init() { addMouseListener(new HandleMouse()); setBackground(Color.yellow); } class HandleMouse extends MouseAdapter { public void mouseClicked(MouseEvent e) { Graphics g = getGraphics(); mouseX = e.getX(); mouseY = e.getY(); update(g); // Calls update directly: not a good idea } } // override update public void update(Graphics g) { paint(g); } public void paint(Graphics g) { g.setColor(Color.red); g.fillOval(mouseX-10, mouseY-10, 20, 20); } }