import java.applet.*; import java.awt.*; public class Scribble extends Applet { private int last_x, last_y; // Hiiren edellinen positio private Color current_color = Color.black; // Voimassa oleva väri. private Button clear_button; // Clear-nappi. private Choice color_choices; // Värivalintaluettelo. // Tätä metodia kutsutaan kun appletti alustetaan. // Appleteissa ei ole main() metodia. public void init() { // Asetetaan taustaväri this.setBackground(Color.white); // Luodaan nappi ja lisätään se applettiin. Asetetaan nappien värit. clear_button = new Button("Clear"); clear_button.setForeground(Color.black); clear_button.setBackground(Color.lightGray); this.add(clear_button); // Luodaan värivalikko ja lisätään se applettiin. // Asetetaan myös valikon värit ja otsikko. color_choices = new Choice(); color_choices.addItem("black"); color_choices.addItem("red"); color_choices.addItem("yellow"); color_choices.addItem("green"); color_choices.setForeground(Color.black); color_choices.setBackground(Color.lightGray); this.add(new Label("Color: ")); this.add(color_choices); } // Tätä metodia kutsutaan kun käyttäjä aloittaa piirtämisen painamalla // hiiren painiketta. public boolean mouseDown(Event e, int x, int y) { last_x = x; last_y = y; return true; } // Tätä metodia kutsutaan kun käyttäjä raahaa hiirtä. public boolean mouseDrag(Event e, int x, int y) { Graphics g = this.getGraphics(); g.setColor(current_color); g.drawLine(last_x, last_y, x, y); last_x = x; last_y = y; return true; } // Tätä metodia kutsutaan kun käyttäjä painaa nappia tai valitsee värin. public boolean action(Event event, Object arg) { // Jos painettiin Clear-nappi, käsitellään painallus. if (event.target == clear_button) { Graphics g = this.getGraphics(); Rectangle r = this.bounds(); g.setColor(this.getBackground()); g.fillRect(r.x, r.y, r.width, r.height); return true; } // Muuten jos valittiin väri, käsitellään valinta else if (event.target == color_choices) { if (arg.equals("black")) current_color = Color.black; else if (arg.equals("red")) current_color = Color.red; else if (arg.equals("yellow")) current_color = Color.yellow; else if (arg.equals("green")) current_color = Color.green; return true; } // Muuten annetaan yliluokan hoitaa tapahtuma. else return super.action(event, arg); } }