Wie entferne ich den Mauszeiger im Vollbild-Exklusivmodus?

7

Ich arbeite an einer einfachen 2D-Engine in Java und habe keine Probleme mit FSEM, Pufferstrategien und so weiter; Mein Problem ist mit dem Mauszeiger. Im Fenstermodus kann ich den Mauszeiger ausblenden, kein Problem, indem ich setCursor () von meinem JFrame verwende, um einen vollständig transparenten Cursor zu setzen. Nach einem Aufruf von device.setFullScreenWindow (this), um in die FSEM zu gelangen, kommt der Mauszeiger zurück und nachfolgende Aufrufe von setCursor (), um sie auf meinen leeren Cursor zurückzusetzen, haben keine Wirkung. Durch den Aufruf von device.setFullScreenWindow (null) kann ich den Cursor wieder loswerden - nur während ich in der FSEM bin, kann ich ihn nicht loswerden.

Ich arbeite unter JDK 6, Zielplattform ist JDK 5 +.

UPDATE: Ich habe noch mehr Tests durchgeführt und es scheint, dass dieses Problem unter MacOS X 10.5 mit Java 6u7 auftritt, aber nicht unter Windows XP SP3 mit Java 6u7. Es könnte also ein Fehler in der Mac-Version der JVM sein.

    
Adrian 10.10.2008, 14:31
quelle

7 Antworten

4

Ich denke, ich habe endlich die Lösung gefunden:

%Vor%

Dies ist eine Apple-eigene Systemeigenschaft, die den Mauszeiger verbirgt, wenn sich eine Anwendung im Vollbildmodus befindet. Es ist der einzige Weg, den ich gefunden habe, um es zu beheben.

    
Adrian 15.10.2008, 17:42
quelle
10

Versuchen Sie, einen benutzerdefinierten unsichtbaren Cursor zu erstellen:

%Vor%     
Janthoe 10.11.2010 04:21
quelle
5

Ein Entwickler hat eine Lösung gefunden, indem er aus einem transparenten GIF einen Ein-Pixel-Cursor erstellt hat.

Ссылка

Ich weiß, dass du das versucht hast, aber er spricht speziell das Problem des Vollbildmodus an, genau wie du sagst, also hat er vielleicht etwas getan, das du nicht getan hast.

    
davenpcj 10.10.2008 16:12
quelle
1

Folgendes hat für mich funktioniert:

%Vor%

Zugegeben, ich habe es noch nicht auf Mac getestet, nur Windows. Aber als ich die üblichen Methoden benutzte, bekam ich den Cursor als Blackbox, also benutze ich den Code über dem, erstelle ein transparentes Feld und setze ihn stattdessen als Cursor. Natürlich müssen Sie die setCursor-Methode für ein AWT-Objekt (z. B. den Frame Ihrer App) verwenden, um diesen hiddenCursor festzulegen. Hier ist meine hideMouse-Methode ('fr' ist mein Frame):

%Vor%     
Ricket 22.06.2009 16:21
quelle
0

Ich weiß nicht, ob dieses Wissen zutrifft, aber in einer alten VB6-App hatte ich das gleiche Problem und ich habe es losgerissen, indem ich den Cursor aus dem Bildschirm bewegte und ihm einige sehr große Werte gab Hoffe es hilft.

    
Antonio Louro 10.10.2008 14:37
quelle
0

Wenn Sie nur unter Windows arbeiten, müssen Sie ShowCursor (FALSE) über JNI aufrufen. Zumindest, um den Cursor ausblenden zu lassen.

Hier ist ein Code, der den 1x1-Cursor erzeugt. Es funktioniert für mich, obwohl ich immer noch einen 1x1-Cursor bekomme.

%Vor%     
seisyll 10.10.2008 19:55
quelle
0

Speziell für Ihr Mac-Problem können Sie über JNI Folgendes verwenden:

Quartz Display Services Referenz - CGDisplayHideCursor

    
slf 10.10.2008 20:43
quelle