/* Tiedosto: Piirra.java Tekijä: Juha Peltomäki Toiminta: Seurataan hiiren liikettä MouseMotionAdapter-luokan avulla. Piirretään ympyrää hiiren liikkumisen mukaan, jotta muodostunut kuva näyttäisi yhtenäisemmältä. Välillä tulee taukoja, sillä pisteet piirretään joko kerta uudestaan. */ import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; public class Piirra { public static void main(String[] args) { new PiirtoIkkuna(); } } class Piste { private int x, y; public Piste() { } public Piste(int x, int y) { this.x=x; this.y=y; } public void asetaPiste(int x, int y) { this.x=x; this.y=y; } public int x() { return x; } public int y() { return y; } public String toString() { return "[" + x + "," + y + "]"; } } class PiirtoIkkuna extends JFrame { // X- ja Y-koordinaatit sisältävä taulukko. private ArrayList pisteet=new ArrayList(); public PiirtoIkkuna() { setSize(300,200); setTitle("Piirto"); addMouseMotionListener(new LiikkeenSeuraaja()); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { dispose(); System.exit(0); } }); Container contentPane = getContentPane(); contentPane.add(new PiirtoPaneeli()); setVisible(true); } /* LiikkeenSeuraaja-luokassa tarkkaillaan hiiren liikkeitä. */ class LiikkeenSeuraaja extends MouseMotionAdapter { public void mouseDragged(MouseEvent ht) { Piste p = new Piste(ht.getX(), ht.getY()); pisteet.add(p); if (pisteet.size() % 10 == 0) repaint(); // System.out.println(p); } } //---------------------------------- class PiirtoPaneeli extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); Iterator iter = pisteet.iterator(); while (iter.hasNext()) { Piste p = (Piste)iter.next(); g.fillOval(p.x(), p.y() ,4,4); } } } //---------------------------------- }