# MouseEvent selber auslösen



## xpaFF (25. Mrz 2007)

HI Leute,

wie kann ich ein Ereignis selber im code auslösen ( das passende event, bei mir ein MouseEvent bekomme ich über einen Socket gesendet ) möchte dann das die Anwendung denkt es wäre auf dem Client die Maus geklickt wurden also es soll MouseDragged aufgerufen werden...

weiß einer was? vielen dank für eure Hilfe ))


----------



## SlaterB (25. Mrz 2007)

wie wärs, den Code aus MouseDragged in eine andere Operation zu kopieren,
und diese dann ganz normal aufzurufen?


----------



## xPaFF (25. Mrz 2007)

das ist nicht ganz so einfach , es wäre leichter wenn ich diesen Event wirklich auslösen könnte


----------



## Wildcard (25. Mrz 2007)

xPaFF hat gesagt.:
			
		

> das ist nicht ganz so einfach , es wäre leichter wenn ich diesen Event wirklich auslösen könnte


Das ist IMO ziemlicher Mist. Warum geht Slaters Vorschlag nicht? Warum verschickst du überhaupt MouseEvents über einen Socket?  :autsch:


----------



## thE_29 (25. Mrz 2007)

Mit der Methode dispatchEvent, hat glaube ich Component oder so! Jedenfalls dein Hauptframe kann das! Dort kannst jeden Event selber abfeuern


----------



## Wildcard (25. Mrz 2007)

Kann man schon, die Frage ist aber ob das auch sinnvoll ist.  :?


----------



## thE_29 (26. Mrz 2007)

Naja, wenn er zB eine Art VNC macht (event über Socket) macht das sehr wohl Sinn!

Ich habe das auch schon ein paar mal gebraucht, um Events weiterzuleiten (zB das eine Scrollbar die äußere scrollen lässt und umgekehrt..)


----------



## xPaFFy (26. Mrz 2007)

genau sowas will ich ja auch machen!

 

Aber es geht nicht...


```
BlackBoardClient jframe = new BlackBoardClient();
			try 
			{
				socket = new Socket ("localhost" , 6666 );
			    new ObjectInputStream (new BufferedInputStream ( socket . getInputStream ()));
			    while( true)
			    {
			    	Object o = ois. readObject ();
			    	MouseEvent me = (MouseEvent) o;
			    	jframe.dispatchEvent( me );
			    	System.out.println( me );
			    }
				
				//socket.close();
			} 

Der MouseEvent wird immer bei mouseDragged im Server ausgelöst und soll an den Client weitergegeben werden, doch mit dispatch tut sich nix, im Debugger ist auch zu sehen das die MouseDragged-Methode des Clients nie aufgerufen wird.
```


----------



## thE_29 (26. Mrz 2007)

Na das geht nicht 

Du musst dir die Eigenschaften von dem Objekt holen, aber zB der Source zeigt ja woanders hin!

Den musst du ersetzen!! Also 1:1 weiterleiten geht nicht!


----------



## xPaFF (26. Mrz 2007)

hmm verstehe nicht ganz, hast du vielleicht ein kurzes Beispiel?


----------



## thE_29 (26. Mrz 2007)

Dein Source im MouseEvent ist einfach nicht der gleiche!

Du kannst jeden event neu instanzieren mit new MousEvent(...)

Und diese ganzen Parameter (außer das Source Objekt und vielleicht den Button auch) musst du auf deinem anderen System durch deine Gegebenheiten ersetzen! (aber mausklick,klickcount, etc kannst du vom gesendeten Event holen)

Source am Host != Source beim Client


----------



## xPaFFy (26. Mrz 2007)

das heißt ich instanziere mit diesem riesigen Konstruktor und component wäre dann das Label auf dem Client und dann müsste das mit dem dispatch klappen?


----------



## thE_29 (27. Mrz 2007)

Jop, genau


----------

