next up previous contents
Nächste Seite: Rechtecke ``aufziehen'' Aufwärts: AWT / Swing Vorherige Seite: Tastaturereignisse abfragen   Inhalt

Mausereignisse - ``Punkte malen''

Das Beispiel zeigt eine Möglichkeit, mit der Maus geometrische Figuren zu setzen - etwa ausgefüllte Kreise. Vergleiche mit dem Beispiel ``Mausereignisse''.

import java.awt.Graphics;
import java.awt.Color;
import java.awt.event.*;


public class Punkte extends java.awt.Frame 
    implements MouseListener, MouseMotionListener {

    int punkte[][] = new int[40][2];
    int zaehler = 0;

    public Punkte() {
        super("Punkte setzen");
        addMouseListener(this);
        addMouseMotionListener(this);
    }

    public void mousePressed (MouseEvent me) {
        if (zaehler < 40) {
            punkte[zaehler][0] = me.getX();
            punkte[zaehler][1] = me.getY();
            zaehler++;
            repaint();
        }
    }

    public void mouseDragged(MouseEvent me) {
    }

    public void mouseMoved(MouseEvent me) {
    }

    public void mouseClicked(MouseEvent me) {
    }

    public void mouseEntered(MouseEvent me) {
    }

    public void mouseExited(MouseEvent me) {
    }

    public void mouseReleased(MouseEvent me) {
    }

    public void paint(Graphics bs) {
        if (zaehler <=40) {
            bs.setColor(Color.white);
            bs.fillRect(10,30,280,250);
            bs.setColor(Color.blue);
            for (int i = 0; i<zaehler; i++) {
                bs.fillOval(punkte[i][0]-5, punkte[i][1]-5,10,10);
            }
            bs.setColor(Color.red);
            bs.drawString(zaehler + " Punkte gesetzt", 20, 40);
        }
    }

    public static void main (String [] args) {
        Punkte proggi = new Punkte();
        WindowListener wl = new WindowAdapter () {
                public void windowClosing(WindowEvent we) {
                    System.exit(0);
                }
            };
        proggi.addWindowListener(wl);
        proggi.setSize(300,300);
        proggi.setLocation(100,100);
        proggi.setVisible(true);
    }
}


\includegraphics[width=4.5cm]{ALPunkte.ps}


Dieses Beispiel lässt sich ``dramatisch'' erweitern: Verwenden einer Menüstruktur, aus der verschiedene geomgetrische Objekte (Punkte, Geraden, Ellipsen, Rechtecke, ...) oder mit Hilfe eines Farbauswahldialoges verschiedene Farben ausgewählt werden können. Soll dieses Beispiel als Applet in einer Browser-Instanz ausgeführt werden, sollte gegebenenfalls die folgende Version gewählt werden, welche die als ``deprecated'' (= veraltet) eingestufte Methode mouseDown() verwendet36:

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Event;

public class Punkte extends java.awt.Frame {

    int punkte[][] = new int[40][2];
    int zaehler = 0;

    public boolean mouseDown(Event e, int x, int y) {
        if (zaehler < 40) {
            setzen(x,y);
            return true;
        }
        else {
            System.out.println("Mehr als 40 Punkte gesetzt ...");
            return false;
        }
    }
        
    public void setzen(int x, int y) {
        punkte[zaehler][0] = x;
        punkte[zaehler][1] = y;
        zaehler++;
        repaint();
    }

    public void paint(Graphics bs) {
        bs.setColor(Color.white);
        bs.fillRect(10,30,280,250);
        bs.setColor(Color.blue);
        for (int i = 0; i<zaehler; i++) {
            bs.fillOval(punkte[i][0]-5, punkte[i][1]-5,10,10);
        }
    }
...



Alfred Nussbaumer 2003-02-10