Wie kann ich loswerden der Maus im full-screen exclusive mode?
Arbeite ich an einem einfachen 2D-Spiel-engine in Java, und haben keine Probleme mit der FSEM -, Puffer-Strategien, und so weiter; mein Problem ist mit dem Maus-cursor. Im Fenstermodus kann ich den Mauszeiger ausblenden, kein problem, durch die Verwendung setCursor() aus meinem JFrame setzen Sie einen vollständig transparenten cursor. Doch nach einem Anruf Gerät.setFullScreenWindow(diese) in FSEM, die Maus kommt zurück, und nachfolgende Aufrufe von setCursor (), um es zurück zu meiner leeren cursor haben keine Wirkung. Aufruf Gerät.setFullScreenWindow(null) ermöglicht es mir, um loszuwerden, der cursor wieder - es ist nur, während ich in FSEM, dass ich kann nicht es loswerden.
Arbeite ich unter JDK 6, target-Plattform JDK 5+.
UPDATE: ich habe getan, einige weitere Tests, und wie es aussieht, tritt dieses Problem unter MacOS X 10.5 w/Java 6u7, aber nicht unter Windows XP SP3 mit Java 6u7. Also, es könnte ein bug in der Mac-version der JVM.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, Erstellen Sie eine benutzerdefinierte unsichtbare cursor:
Einem Entwickler einen Weg gefunden, um es durch die Schaffung eines ein-pixel-cursor aus einem transparenten GIF.
http://sevensoft.livejournal.com/23460.html
Ich weiß, Sie haben versucht, aber seine ist speziell auf die Ausgabe von full-screen-Modus, genau wie du sagst, so vielleicht gibt es etwas, das er getan hat, das Sie nicht haben.
Ich glaube, ich habe endlich die Lösung gefunden:
Dies ist ein Apple-proprietäres system, Eigenschaft, hinter der sich der Maus-cursor, wenn eine Anwendung im Vollbild-Modus. Es ist die einzige Möglichkeit, die ich gefunden habe, um es zu beheben.
Hier ist, was die Arbeit für mich:
Zugegeben, ich habe es noch nicht getestet auf dem Mac (noch) nicht, nur Windows. Aber wenn ich in den gängigen Methoden, ich war immer der cursor als black box, so dass ich mit dem obigen code das erstellen einer transparenten box und legen Sie es als cursor, statt. Natürlich müssen Sie die setCursor-Methode auf ein AWT-Objekt (wie Ihre app-Frame) zu setzen, hiddenCursor. Hier ist mein hideMouse Methode ('fr' ist mein Frame):
Ich weiß nicht, ob diese Erkenntnis aber in einem alten VB6-app-ich hatte das gleiche problem und ich habe es Los, bewegen Sie den cursor aus dem Bildschirm gibt es einige sehr große Werte.
Hoffe, es hilft.
Wenn Sie laufen nur auf Windows, es sieht aus wie Sie benötigen, um call ShowCursor(FALSE) über JNI. Zumindest, um den cursor ausblenden vervollständigen.
Hier ist etwas code, der schafft das 1x1 cursor. Es funktioniert für mich, aber ich bekomme immer noch eine 1x1-cursor.
Speziell für Ihren Mac problem mit JNI könnte man Folgendes verwenden:
Quarz-Display-Services Referenz - CGDisplayHideCursor