Ereignisverarbeitung

Status
Nicht offen für weitere Antworten.
F

Fred1

Gast
Hallo,

ich möchte für eine eigene Klasse Events festlegen, die diese Klasse auslösen kann und von einem eventlistener abgefangen werden können.

Meine Klasse sieht folgendermaßen aus: Sie ist von JPanel abgeleitet und enthält mehrere Bilder, die auf dem JPanel gezeichnet werden. Die Bilder können mit der Maus auf dem JPanel verschoben werden.

Ich möchte nun erreichen, dass immer wenn zwei Bilder übereinandergeschoben werden ein Event ausgelöst wird, das dann von einem eventlistener abgefangen werden kann. Wie macht man das? Über eine Beschreibung oder einen Link wäre ich sehr dankbar!

Vielen Dank im voraus

Fred1
 

kaie

Bekanntes Mitglied
Zunächst würde ich eine eigene Event-Klasse definieren, die alle Informationen über Dein Ereignis enthält (hier gebe ich einfach mal die beiden Bilder mit):
Code:
public class BildEvent extends Event
{
    public Image bild1;
    public Image bild2;
    public BildEvent( Image i1, Image i2 )
    {
        bild1 = i1;
        bild2 = i2;
    }
}
Für die Empfängerseite schreibst Du Dir einfach ein Listener-Interface, das die Methoden enthält, die beim Auftreten des Ereignisses aufgerufen werden sollen:
Code:
public interface BildListener
{
    public void bilderKollidiert( BildEvent be );
}
Dieses Interface musst Du dann überschreiben:
Code:
public class MeinListener implements BildListener
{
    public void bilderKollidiert( BildEvent be )
    {
        System.out.println( "Bild "+be.bild1+" wurde über Bild "+be.bild2+" geschoben" );
    }
}
Nun muss dieser Listener nur noch von irgendwo aufgerufen werden:
Code:
public class MeinCanvas extends Canvas
{
    private Vector bildListener = new Vector();
    ....
    public void addBildListener( BildListener b )
    {
        bildListener.add(b);
    }
    ....
    private void fireBildEvent( BildEvent be )
    {
        for( int i=0; i<bildListener.size(); i++ )
        {
            ((BildListener)bildListener.elementAt(i)).bilderKollidiert(be);
        }
    }
    ....
}
Die Methode fireBildEvent brauchst Du jetzt nur noch in Deiner mouseDragged-Methode (oder wo auch immer Dein Event auftreten soll) aufzurufen. Reicht das als Erklärung?
 
F

Fred1

Gast
Vielen Dank!

ich glaub ich weiß jetzt wie es geht!

Bis dann
Fred1
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
1 Ereignisverarbeitung AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben