2013-08-14 6 views
0

Я добавил Java3D KeyNavigatorBehavior к SimpleUniverse в моей программе Java3D. Я знаю, что KeyNavigatorBehavior обнаруживает, когда нажимаются стрелки вверх, вниз, влево и вправо, но я также хотел бы обнаружить другие ключи, такие как WASD, но не имел большого успеха в поисковой системе «пользовательское поведение навигатора Java3D».Пользовательский KeyListener в Java3D

Я смотрел на исходный код KeyNavigatorBehavior, найти здесь:

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

и заметил, что класс KeyNavigator, здесь:

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

кажется обрабатывать ключ Мероприятия. К сожалению, объект является частным членом класса без геттера или сеттера, поэтому я не думаю, что у меня есть доступ к нему.

Я также попытался добавить KeyListener к SimpleUniverse.getCanvas(), но это не сработало, и я не думаю, что это правильный метод.

Мне интересно, может ли кто-нибудь дать мне предложение о том, как я могу добавить свои собственные ключи, которые будут обнаружены в Java3D.

(Я понимаю, что я могу скопировать и вставить исходный код и сделать все изменения, мне нужно, но я надеюсь, что может быть лучше и менее болезненной альтернативой.)

Спасибо за помощь!

+1

Что означает «не работает»? Предполагая, что вы используете Swing для создания окна, в котором вы рисуете, я предлагаю вам ознакомиться с [Учебным пособием по Oracle KeyListener] (http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html). Он должен применяться одинаково хорошо для приложения Java3D. –

+0

Ugh. Спасибо что подметил это. Я просто подумал, что «не работает» снова, и понял, что это работает - я просто забыл вызвать метод, чтобы добавить слушателя. Я чувствую себя действительно глупо сейчас ... если вы хотите опубликовать это как ответ, я с радостью приму это. – user2570465

ответ

0

На самом деле, я нашел проблему, благодаря комментарию Монады Ньюба. Вы можете просто использовать simpleUniverse.getCanvas(). AddKeyListener(), чтобы добавить прослушиватель ключей в вашу программу Java3D, а ключевые события должны работать нормально.

 Смежные вопросы

  • Нет связанных вопросов^_^