2013-08-14 5 views
0

J'ai ajouté KeyNavigatorBehavior de Java3D à un SimpleUniverse dans mon programme Java3D. Je sais que le KeyNavigatorBehavior détecte quand les flèches haut, bas, gauche et droite sont enfoncées, mais j'aimerais aussi détecter d'autres clés, telles que WASD, mais je n'ai pas eu beaucoup de chance pour googler le comportement du navigateur de clés Java3D.KeyListener personnalisé dans Java3D

Je l'ai regardé le code source KeyNavigatorBehavior, trouvé ici:

http://www.java2v.com/Open-Source/Java-Document/6.0-JDK-Modules/java-3d/org/jdesktop/j3dfly/utils/vpbehaviors/KeyNavigatorBehavior.java.htm

et a remarqué que la classe KeyNavigator, trouvé ici:

http://www.java2v.com/Open-Source/Java-Document/6.0-JDK-Modules/java-3d/com/sun/j3d/utils/behaviors/keyboard/KeyNavigator.java.htm

semble gérer la clé événements. Malheureusement, l'objet est un membre de classe privé sans getter ou setter, donc je ne pense pas que je puisse y accéder.

J'ai également essayé d'ajouter un KeyListener à SimpleUniverse.getCanvas(), mais cela n'a pas fonctionné, et je ne pense pas que ce soit la bonne méthode. Je me demande si quelqu'un pourrait me suggérer comment ajouter mes propres clés à Java3D.

(je me rends compte que je pouvais copier et coller le code source et apporter tous les changements que je dois, mais j'espère qu'il pourrait y avoir une meilleure et alternative moins douloureuse.)

Merci pour l'aide!

+1

Que signifie "ne fonctionne pas"? En supposant que vous utilisez Swing pour créer la fenêtre où vous peignez, je vous suggère de consulter le [Tutoriel KeyListener d'Oracle] (http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html). Cela devrait également s'appliquer à une application Java3D. –

+0

Ugh. Merci d'avoir fait remarquer cela. Je me suis dit que ça ne marchait plus et j'ai réalisé que ça marchait - j'oublie juste d'appeler la méthode pour ajouter l'auditeur. Je me sens vraiment bête en ce moment ... si vous voulez afficher cela comme une réponse, je l'accepterai volontiers. – user2570465

Répondre

0

En fait, j'ai trouvé le problème, grâce au commentaire de Monad Newb. Vous pouvez simplement utiliser simpleUniverse.getCanvas(). AddKeyListener() pour ajouter un programme d'écoute de clé à votre programme Java3D, et les événements clés devraient fonctionner correctement.