2010-11-22 39 views
2

J'ai créé un jeu Java basé sur JPanel. Quand je l'ajoute à un JFrame cela fonctionne parfaitement, et quand je l'ajoute à un JApplet et que je le teste avec le testeur d'applet intégré d'eclipse, cela fonctionne parfaitement. Toutefois, lorsque j'essaie d'exécuter l'applet via un site HTML, cela ne fonctionne pas. Il charge, mais il ne prend pas de saisie au clavier. Je l'ai mis en place où "appuyant sur" commence le jeu, mais même lorsque je clique sur le jeu et appuyez sur s, rien ne se passe. Dois-je régler le focus du clavier, parce que je pensais que c'était fait automatiquement.focus pour les applets java

+0

Quel navigateur sur quelle plateforme utilisez-vous? Avez-vous testé d'autres applets utilisant le clavier pour exclure un problème avec votre navigateur? (Vous pouvez essayer http://xenomachina.com/soko/ qui utilise le clavier, mais qui est basé sur AWT non Swing.) –

Répondre

1

mais il ne nécessite pas d'entrée au clavier. KeyEvents sont uniquement transmis au composant qui a le focus.

Je suppose que votre panneau n'a pas de focus, alors assurez-vous de rendre le panneau orientable, puis utilisez la méthode requestFocusInWindow() une fois que l'interface graphique est visible pour s'assurer que le panneau a le focus. Cependant, la meilleure solution au problème n'est pas de s'appuyer sur le KeyListener, mais plutôt d'utiliser les liaisons de touches. Swing a été conçu pour utiliser les liaisons de clés.

En savoir plus sur Key Bindings.

+0

Appel de requestFocusInWindow() dans la classe qui étend JApplet après avoir ajouté le panneau à l'applet travaillée. Merci beaucoup. – Jeff

+0

En outre, je vais certainement envisager d'utiliser des raccourcis clavier sur les écouteurs clés dans le futur. – Jeff

+0

@Jeff, alors pourquoi n'avez-vous pas encore accepté la réponse? Je savais que je devrais seulement mentionner l'approche des liaisons clés. Trop de bergers prennent l'échappatoire facile perçue. – camickr