Swing KeyBoardListener funktioniert nicht unter UBUNTU

Ich habe einen Pacmanclone geschrieben der unter Windows prima läuft.
Als ich ihn auf meinem Laptop unter UBUNTU testen wollte. Funktionierte die Tastatureingabe nicht mehr.
Den ursprünglichen KeyListener habe ich darauf durch KeyBindings ersetzt. Unter Windows läufts, aber unter UBUNTU nicht.

Weis jemand zu diesem Problem eine Lösung bzw. einen Grund warum der KeyListener nicht so funktioniert wie unter Windows.

Wäre dankbar für eine Hilfestellung
 
Für die Interessierten: Auch unter UBUNTU läuft die Tastatur, wenn man mittels alt + tab zu einem anderen Prozess wechselt und dann wieder mit alt + tab wieder zum ursprünglichen Spiel zurück wechselt. Dann funktionieren die Tasten so wie programmiert. Scheinbar wird unter Ubuntu kein Focus Event beim Start der Anwendung generiert oder es passiert zu einem Zeitpunkt wo Java das Event noch nicht erwartet.
Falls jemand eine Idee hat, was genau die Ursache ist wäre ich dankbar für einen Input.

;)
 
Hm... Ist mir noch nicht so aufgefallen - und ich arbeite unter Ubuntu (man muss es übrigens nicht komplett gross schreiben ;)).

Versuche mal bitte auf der primären Stage "primaryStage.requestFocus();" auszuführen, ob das etwas bringt - vor oder nach dem #show()...
 
Ich programmiere mit Swing.
primaryStage ?
Wenn Du den JFrame meinst, dort habe ich bereits requestFocus() aufgerufen.
 
Habe jetzt die Lösung für das Problem gefunden. Für alle die ein ähnliches Problem haben.
Also ich habe eine kleine eigene Game Engine für Swing geschrieben. Um die Geschwindigkeit meiner Sprites auf einem Systemunabhängigen Niveau zu halten, haben die Sprites ihren eigenen von der Framerate unabhängigen Taktgeber. Alle graphischen Ereignisse werden in ein Image geschrieben.
Das Problem hier war, dass ich die Sprites innerhalb der Erstellung des JFrames erzeugt habe, und die Animationen dieser gestartet hatte bevor der JFrame erzeut war. Unter der Windows JVM stellte dies kein Problem dar. Weil der JFrame das start FocusEvent erhielt und das Keyboard somit binden konnte. Unter der Linux JVM war dies nicht der Fall. Das obige Workaround funktioniert , weil durch das Wechseln der Anwendungen ein neues Focus Event erzeugt wird und der Frame dann schon fertig. Die richtige Lösung ist aber zuerst den Frame zu erzeugen und dann die Elemente hinzufügen.
Scheinbar blockiert der Zugriff auf das Graphics Element das FocusEvent.
:)
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben