MouseEvent selber auslösen

  • Themenstarter Themenstarter xpaFF
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
X

xpaFF

Gast
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 🙂))
 
wie wärs, den Code aus MouseDragged in eine andere Operation zu kopieren,
und diese dann ganz normal aufzurufen?
 
das ist nicht ganz so einfach , es wäre leichter wenn ich diesen Event wirklich auslösen könnte
 
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:
 
Mit der Methode dispatchEvent, hat glaube ich Component oder so! Jedenfalls dein Hauptframe kann das! Dort kannst jeden Event selber abfeuern 😉
 
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..)
 
genau sowas will ich ja auch machen!

😀

Aber es geht nicht...

Code:
   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.
 
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!
 
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
 
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?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben