# Events auslösen



## Guest (22. Okt 2006)

Hallo,

ich suche nach einer Möglichkeit Ereignisse auszulösen, auf die dann andere Objekte hören sollen.

Habe schon einige Versuche mit dem:


```
Toolkit.getDefaultToolkit().getSystemEventQueue().
  postEvent(
   new ActionEvent( /* Object source, int id, String command */ )
  );
```

angestellt. Aber nix führe zum Ergebnis.

Dann habe ich versucht mit java.awt.Robot;, manuell Keyevent auszulösen, aber das ich ja nicht was ich
eigentlich haben will.

Kann mir jemand einen verständlichen kurzen Sourcode geben mit dem ich das Problem lösen kann.

Vielen Danke schon mal im Vorraus!
-Patrick


----------



## VdA (22. Okt 2006)

das sollte doch mit 

```
meinObjekt.addActionListener(/*Objekt das ActionEvents implementiert*/) ;
        meinObjekt.setActionCommand("Mein Action Cmd");
```
gehen oder?
probier einfach ma aus


----------



## Guest (23. Okt 2006)

Hi,

erstmal danke für deine Antwort, aber..

getActionCommand() liefert einen String als Ergebnis, der Informationen zu dem Objekt enthält, in dem das
Ereignis ausgelöst wurde. Beim Drücken auf einen Button liefert ein Aufruf von getActionCommand() des
erzeugten ActionEvent-Objektes den String, der zuvor mit setActionCommand() gesetzt wurde. 

Mit dieser Information kann ich bestimmen was also gesendet wird. Aber ich möchte das das Objekte
von sich aus sendet. Nicht erst durch auslösen der Nachricht durch Buttonklick.

sollte also eher so aussehen:


```
if(wert==erreicht)
meinobjekt.sendeEvent("hört mal alle her")
```

Den Tipp aber finde ich super, mit dem getActionCommand() kann ich ja abhören was da gekommen ist.
Wenn ich den Knopf nur noch selbständig zum Senden kriege!! 

So, machs gut
-Patrick


----------



## Guest (24. Okt 2006)

So, für die von euch die es interessiert. Hier ist die Lösung meines Problems.

Beim Buttonklick wird ein selbst erzeugtes ActionEvent erstellt und über den Button gesendet.
Das Event bekommt noch eine Nachricht über die es zugewiesen werden kann.

Und wird dann oben verarbeitet!


```
import java.applet.Applet;
import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class start extends Applet
{
	public void init()
	{		
		new test();
		// Hier werden alle Events abgefangen, wirklich ALLE!
		AWTEventListener ael = new AWTEventListener() {
			  public void eventDispatched( AWTEvent event ) 
			  {
				  // Hier nur der verarbeitet der von knopp 1 kommt
				  if(event.toString().contains("das wird abgefragt"))
				  System.out.println(event.toString());
			  }
			};
			Toolkit.getDefaultToolkit().addAWTEventListener( ael, ActionEvent.ACTION_PERFORMED );
	}
}

class test extends JFrame
{
	JButton b1 = new JButton("knopp 1");

	public test()
	{
		b1.addActionListener(new ActionListener()
		{
				public void actionPerformed(ActionEvent arg0) 
				{
					ActionEvent d = new ActionEvent(b1,ActionEvent.ACTION_PERFORMED,"das wird abgefragt");
					System.out.println(d.toString());
					b1.dispatchEvent(d);
				}
		});
			
		add(b1);
		pack();
		setVisible(true);		
	}
}
```

Machts gut
-Patrick


----------

