2009-07-24 8 views
0

Ich habe seltsames Verhalten, wenn ich einen Stylus mit Swing benutze.Wie werden Multi-Knopf-Maschinen in Schwung gebracht?

Ich interpretiere das Drücken der Taste an der Seite des Stiftes (RECHTS) und das Drücken des Stiftes nach unten (LINKS) als ein "Grab" -Ereignis, aber gelegentlich (öfter als 0) werden Ereignisse gerade fallen gelassen. Die JavaDocs für MouseEvent sind ziemlich explizit darüber, wie Multibutton-Druckvorgänge ausgeführt werden, wenn sie nacheinander ausgeführt werden (links unten, rechts unten, rechts oben, links oben), sagen aber nichts über das gleichzeitige Drücken von Tasten aus.

Ich frage mich, würden sie als zwei mousePressed Ereignisse oder als eine mit der Tastenmaske für beide Tasten oder etwas ganz anderes ausgegeben werden?

Danke.

Antwort

1

würde ich die API doc interpretieren als gleichzeitiges Drücken von Tasten einfach nicht möglich sein: Tasten gedrückt werden

Wenn mehrere Mäuse, die jeweils drücken, loslassen, und in einem separaten Ereignisse Ergebnisse klicken.

So sollte separate Ereignisse sein. Die Probleme, die Sie beobachten, könnten auf Fehler in Ihrem Code, dem Stifttreiber, der Hardware oder dem Swing zurückzuführen sein (

) Ich würde versuchen, das Problem zu diagnostizieren Ereignisse auf verschiedenen Ebenen protokollieren, wenn möglich.

+0

In Bezug auf die abnehmende Reihenfolge der Wahrscheinlichkeit, das ist normalerweise die Annahme, die ich auch mit gehe. Probleme in meinem Code sind in der Regel Missverständnisse des Java-Codes. Daher diese erste Frage nach dem Lesen der Dokumente. –

1

Gleichzeitige Tastendrücke werden als zwei separate mousePressed-Ereignisse verarbeitet. Führen Sie die Mouse Events Demo aus, um sie separat verarbeitet zu sehen.

0

Wie ich mich erinnere, gibt es keine Möglichkeit, gleichzeitige Tasten drücken zu behandeln. Was ich getan habe, um zu gewährleisten, dass mehrere Tasten gleichzeitig gedrückt werden, wurde so behandelt, als hätte ich eine boolesche Variable für jede Taste, und wenn sie gedrückt wurde, würde ich sie auf true setzen und wenn sie veröffentlicht würde, würde ich die einstellen Boolescher Wert bis false Dann, wenn es an der Zeit war, eine Aktion auszuführen, würde ich nach den Booleschen Variablen suchen (manchmal würde ich den Actionlistener auf den Methodenaufruf umleiten, um zu bestimmen, welche Aktion als nächstes ausgeführt werden würde, nachdem die Booleans gesetzt wurden). Das geht nicht, wenn Sie nur zur gleichen Zeit gepresst werden wollen, aber wenn Sie nur versuchen, Kombinationen zur Arbeit zu bringen, dann habe ich das gemacht. Das war vor ungefähr 4 Jahren, vor Java 5, damit liege ich falsch.

Verwandte Themen