2010-11-22 9 views
2

Ich machte ein Java-Spiel, das alles auf JPanel basiert. Wenn ich es zu einem JFrame hinzufüge, funktioniert es perfekt, und wenn ich es zu einem JApplet hinzufüge und es mit dem eingebauten Applet-Tester von Eclipse teste, funktioniert es perfekt. Wenn ich versuche, das Applet über eine HTML-Site auszuführen, funktioniert es jedoch nicht. Es lädt, aber es braucht keine Tastatureingabe. Ich habe es eingerichtet, wo "pressing s" das Spiel startet, aber selbst wenn ich auf das Spiel klicke und s drücke, passiert nichts.Fokus für Java-Applets

Muss ich den Tastaturfokus einstellen, weil ich dachte, dass das automatisch gemacht wurde.

+0

Welchen Browser auf welcher Plattform verwenden Sie? Haben Sie andere Applets getestet, die die Tastatur verwenden, um ein Problem mit Ihrem Browser auszuschließen? (Sie können versuchen, http://xenomachina.com/soko/, die die Tastatur verwendet, aber basiert auf AWT nicht Swing.) –

Antwort

1

aber es dauert keine Tastatureingabe.

KeyEvents werden nur an die Komponente übergeben, die den Fokus hat. Ich schätze, Ihr Panel hat keinen Fokus. Stellen Sie daher sicher, dass Sie das Panel fokussierbar machen und verwenden Sie anschließend die requestFocusInWindow() -Methode, sobald die GUI sichtbar ist, um sicherzustellen, dass das Panel den Fokus hat.

Die bessere Lösung für das Problem besteht jedoch nicht darin, sich auf den KeyListener zu verlassen, sondern stattdessen Key Bindings zu verwenden. Swing wurde entwickelt, um Key Bindings zu verwenden.

Lesen Sie mehr über Key Bindings.

+0

Aufruf von RequestFocusInWindow() in der Klasse, die JApplet erweitert, nachdem ich das Panel zum Applet hinzugefügt gearbeitet. vielen Dank. – Jeff

+0

Außerdem werde ich in Zukunft die Verwendung von Tastenbelegungen über Tastenhörer in Betracht ziehen. – Jeff

+0

@Jeff, warum hast du dann die Antwort noch nicht akzeptiert? Ich wusste, ich hätte nur den Ansatz der Key Bindings erwähnen sollen. Zu viele Beginner nehmen den wahrgenommenen leichten Ausweg. – camickr