Mausprogrammierung

Ereignisse:
Jedesmal, wenn eine Taste gedrückt,die Maus bewegt, das Applet verdeckt wird usw., wird ein Objekt der Klasse Event erzeugt. Jedem für das Applet wichtige Ereignis entspricht also ein Programmobjekt, das durch seine Attribute das jeweilige Ereignis beschreibt. Diese Attribute besitzen alle das Zugriffsprivileg public und haben im einzelnen folgende Bedeutung:

        Objekt target          gibt das Objekt an, für das das Ereignis eingetreten ist.

        int x                                enthält für Mausereignisse die x-Koordinate des Kursors

        int y                                enthält für Mausereignisse die y-Koordinate des Kursors

        int ClickCount        enthält nur bei Mausclicks einen Wert, nämlich ihre Anzahl.
                                                      Dadurch können Doppelclicks festgestellt werden.
 
 

Ereignishandler:
Immer, wenn ein Ereignis eintritt, wird eine zentrale Methode der Applets aufgerufen,die diese von ihrer Elternklasse Component geerbt haben. Sie heisst handleEvent und erhält eine Referenz des Ereignisobjekts als Parameter übergeben. Ihre Definition lautet:

public boolean handleEvent (Event evt);

Der Rückgabewert gibt an, ob das Ereignis verarbeitet wurde (true) oder ob das Elternoblekt die Verarbeitung übernehmen soll (false).
Die Methode handleEvent ist die Drehscheibe der Ereignisverarbeitung. Sie stellt den Ereignistyp fest und zeichnet das Objekt an spezielle Ereignisfunktionen, auch Handlerfunktionenoder kurz Handler genannt ,weiter, wobei jeweils die wichtigen  Attribute des Ereignisobjektes, wie beispielsweise Mauskoordinaten oder Tastencode, als separate Parameter übergeben werden. Diese speziellen Handler sind alle public, geben einen boolean-Wert zurück und sind im einzelnen zuständig für:

     gotFocus (Event evt, Object what)         Erhalt des Eingabefokus

     lostFocus (Event evt, Object what)        Verlust des Eingabefokus

     mouseEnter (Event evt, int x, int y)        Maus tritt ins Applet ein

     mouseExit (Event evt, int x, int y)           Maus hat Applet verlassen

     mouseDown (Event evt, int x, int y)        Maustaste wurde gedrückt

     mouseDrag (Event evt, int x, int y)         Maus wird gezogen

     mouseUp (Event evt, int x, int y)            Maustaste wurde losgelassen

     mouseMove (Event evt, int x, int y)        Maus wird bewegt
 

Malen mit der Maus:

Programm:
 
import java.applet.*;
import java.awt.*;

public class Malen extends Applet
{
Point m_punkt;

 public Malen()
  {m_punkt = new Point(-1,-1);
  }
 
 public void paint(Graphics g)
 {
 g.fillOval(m_punkt.x,m_punkt.y,1,1);
 showStatus("(x/y):  ("+m_punkt.x+"/" +m_punkt.y+ ")");
 }
 
 public boolean mouseDrag(Event evt, int x, int y)
 {
 m_punkt.move(x,y);
 repaint(m_punkt.x,m_punkt.y,1,1);
 return true;
 }
 
 public boolean mouseMove(Event evt, int x, int y)
 { 
 showStatus("(x/y):  ("+x+"/" +y+ ")");
 return true;
 }
}
 

View Applet
 

Anwendungen:
Ein Applet, das bei einem Doppelclick die Zeichnung löscht und die Hintergrundfarbe mit der Vordergrundfarbe vertauscht:

Quellcode:
 
import java.applet.*;
 import java.awt.*;

 public class Malen2 extends Applet
 {
 Point m_punkt;
 Color m;

  public Malen2()
   {m_punkt = new Point(-1,-1);
   }
  
  public void paint(Graphics g)
  {
  g.fillOval(m_punkt.x,m_punkt.y,1,1);
  showStatus("(x/y):  ("+m_punkt.x+"/" 
 +m_punkt.y+ ")");
  }
  
  public boolean mouseDrag(Event evt, int x, int y)
  {
  m_punkt.move(x,y);
  repaint(m_punkt.x,m_punkt.y,1,1);
  return true;
  }
  
  public boolean mouseMove(Event evt, int x, int y)
  { 
  showStatus("(x/y):  ("+x+"/" +y+ ")");
  return true;
  }
  
  public boolean mouseDown(Event evt, int x, int y)
  {
   if (evt.clickCount>1)
     {
      Color m = getBackground();
      setBackground(getForeground());
        setForeground(m);
   }
   
     repaint();
    return true;
   
   }
 }

View Applet

Konstruiert von Leonidas Tsotras und Antonis Karassavvidis