# Warten auf Event



## das-mo (26. Dez 2011)

Hi Leute,

Ich bin gerade dabei ein GO-Spiel zu schreiben und bin jetzt auf folgendes Problem gestoßen:

In meinem Frame wird der Spielzug durchgeführt und soll bis zu einem bestimmten Punkt laufen. An diesem Punkt soll das Programm so lange warten bis aus dem Panel "Spielbrett" das Mouseevent ausgelöst wird.

Ich habe bis jetzt folgenden Ansatz:

```
synchronized (this) {
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
```
Hier habe ich aber das Problem das ich von dem Panel Spielbrett aus nicht Frame.notify(); aufrufen kann, da es ja ein Objekt von dem Frame ist und es an sich nicht kennt.

LG das-mo


----------



## Gregorrr (26. Dez 2011)

Eine InterrputedException ist für einen FEHLERFALL gedacht, nicht für einen gewollten Programmfluss... Warum implementierst du nicht einen Observer und implementierst deinen eigenen Event-Mechanismus.

Kann auch sein, dass ich nicht ganz verstanden habe, was du eig. willst...


----------



## sambalmueslie (26. Dez 2011)

Hm du müsstest schon ein wenig mehr Infos zur Verfügung stellen, damit man(also zumindest ich) versteht was du da so tüftelst  

Prinzipiell würde ich sagen es reicht dir, dass du dich als MouseListener registrierst und dann auf die Ereignisse regierst. Wenn du dort dann anfängst mit Wait zu warten, dann blockierst du evtl. den Zeichenthread oder die Abarbeitung der Event-Queue und das ist nicht gut.

Versuch es also doch einfach mal ohne wait.


----------



## fastjack (26. Dez 2011)

Dafür ist normalerweise das Listener-Konzept zuständig.


----------



## bERt0r (26. Dez 2011)

Wie, du hast eine AI für Go programmiert oder was soll das "warten", meinst du die Zeituhr?
Wie bereits gesagt gibts den "MouseListener", wird der auf einen Component geaddet, wird der Code in ihm ausgeführt, sobald auf den Component geklickt wird.
How to Write a Mouse Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)


----------



## das-mo (27. Dez 2011)

Also ich weiß nicht ob ich einfach zu blöd bin :-D
Also ich habe meine Methode wo der Ablauf für den Spielzug drinsteht und an einer Stelle brauch ich die Koordinaten von dem Mausklick. 

```
class Frame
...
public void Spielzug()
{
tu dies
int X,Y;(Mausklick)
tu das
}
```
Der Mausklick wird aber in einem Panel registriert

```
class Panel
...

Mouselistener()...
e.getX/Y;
```

Versteht ihr so jetzt wo ich hänge^^


----------



## sambalmueslie (27. Dez 2011)

hm ja schon .. aber was hältst du davon, dass von deinem MouseListener dann überhaupt erst die Methode "macheSpielzug(x,y)" aufgerufen wird?


----------



## das-mo (27. Dez 2011)

Schade in dem Forum gibt es keinen Smiley der den Kopf vor die Wand haut :-D
Vielen dank :-D


----------

