import java.applet.*; import java.awt.*; import java.awt.event.*; public class Scribble4 extends Applet { private int lastx, lasty; /** Kerrotaan järjestelmälle, että ollaan kiinnostuneita hiiritapahtumista, * hiiren liikkeistä kertovista tapahtumista ja näppäintapahtumista. * Näin täytyy tehdä, tai tapahtumia ei lähetetä. */ public void init() { this.enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.KEY_EVENT_MASK); this.requestFocus(); // Pyydetään fokus, jotta saataisiin // näppäintapahtumia } /** Tätä kutsutaan, kun tapahtuu jonkinlainen hiiritapahtuma */ public void processMouseEvent(MouseEvent e) { if (e.getID() == MouseEvent.MOUSE_PRESSED) { // Tutkitaan tapahtuman lastx = e.getX(); lasty = e.getY(); // tyyppiä } else super.processMouseEvent(e); // Käsittelemättä jätetyt tapahtumat } // annetaan yliluokalle. /** Tätä kutsutaan, kun tapahtuu hiiren liikkeestä kertova tapahtuma */ public void processMouseMotionEvent(MouseEvent e) { if (e.getID() == MouseEvent.MOUSE_DRAGGED) { // Tutkitaan tyyppi int x = e.getX(), y = e.getY(); Graphics g = this.getGraphics(); g.drawLine(lastx, lasty, x, y); lastx = x; lasty = y; } else super.processMouseMotionEvent(e); } /** Tätä kutsutaan, kun tapahtuu näppäintapahtuma: * tyhjennetään näyttö, kun painetaan 'c'-näppäintä. */ public void processKeyEvent(KeyEvent e) { if ((e.getID() == KeyEvent.KEY_TYPED) && (e.getKeyChar() == 'c')) { Graphics g = this.getGraphics(); g.setColor(this.getBackground()); g.fillRect(0, 0, this.getSize().width, this.getSize().height); } else super.processKeyEvent(e); // Käsittelemättä jätetyt tapahtumat annetaan } // yliluokalle. }