Frage

Ich möchte die Maus in einem JFrame sperren. Das heißt, kann die Maus nicht den Inhalt des JFrame lassen (es sei denn, der Benutzer Treffer entkommen, Alt-Tab oder das Fenster sonst verliert Fokus). Ideen?

Danke!

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob es eine automatische Art und Weise, dies zu tun, aber man konnte die Roboter Klasse die Mausposition einzustellen. So in der Event-Handler für, wenn die JFrame Gewinne konzentrieren Sie beginnen können Sie die Maus bewegen Ereignis zu beobachten, und, wenn die Maus bewegt sich nur sicherstellen, dass es bleibt in der JFrame. Wenn es die JFrame Blätter können Sie die Robot-Klasse verwenden, die Maus der Position zurück gehen.

Dann, wenn das Fenster den Fokus verliert, können Sie von der Maus bewegen Ereignis deregistrieren.

Andere Tipps

Die Robot-Klasse ist ideal für diese Art der Sache, aber ich würde einen anderen Weg vorschlagen.

Vielleicht das Spiel Vollbild machen (Maximierung der Fensterscheibe) erreichen würde, was Sie stattdessen will. Die Maus wäre nicht in der Lage, die Fenster und keine hässlichen Robot-esque Hack Bedürfnisse zu beenden verwendet werden, um den Benutzer zu zwingen, innerhalb der Grenzen zu bleiben.

Ein andere Abhilfe, die ich nur gedacht - verriegeln Sie die Cursor in der Mitte des Rahmens, und macht es invisible.Then einen Software-Cursor machen, wo der reale Cursor sein sollte. Sie können dann sperren Sie den Cursor zu, was Bereich, den Sie möchten.

Hier ist ein hinterhältig man könnte funktionieren, wenn Sie nicht Maustaste 2 im Spiel verwenden. Verwenden Sie einen Roboter zu drücken Sie BUTTON2.

Die Idee ist, so dass die Maus gezogen wird, nicht verschoben. Jedes Mal, wenn Sie eine Maus bewegt Ereignis bekommen, ist es, weil der Benutzer button2 freigegeben hat, so drücken sie sich wieder.

Wenn Sie eine Maus erhalten geschleppt Ereignis, wenn die Maus außerhalb des Fensters ist, ihn wieder in.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top