Почему у GLAutoDrawable нет метода addMouseListener - PullRequest
1 голос
/ 11 декабря 2011

Я хочу добавить MouseListener из com.jogamp.newt.event.MouseListener в GLAutoDrawable следующим образом:

/* inside the class that implements GLEventListener */   
@Override
     public void init(GLAutoDrawable drawable) {
       keyMaster = new KeyMaster();
       drawable.addMouseListener(keyMaster);
     }

GLAutoDrawable из пакета javax.media.opengl.GLAutoDrawable.Eclipse говорит, что нет метода addMouseListener.

Но на http://download.java.net/media/jogl/builds/spec/prd/jsr-231-prd-javadoc/index.html говорят, что он наследует интерфейс ComponentEvents, который имеет этот метод.

Я также нашел на http://download.java.net/media/jogl/jogl-2.x-docs/index.html?javax/media/opengl/GLAutoDrawable.html, что нет интерфейса ComponentEvents как суперкласса.

Как это могло быть.Я нашел много примеров, которые используют drawable.addMouseListener (...)

Что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Как сказал Нил, GLAutoDrawable - это интерфейс. Фактический класс, который вы получаете, вероятно, является либо GLCanvas, либо GLJPanel, оба из которых могут иметь подключенных слушателей мыши.

Однако вы не должны добавлять слушателей мыши в init () . init () вызывается не только при первом создании компонента - его можно вызывать всякий раз, когда системе требуется повторная инициализация GL, и это может происходить несколько раз в течение срока службы компонента. Добавьте любых слушателей при создании GLCanvas или GLJPanel (да, ваше приложение создает их).

0 голосов
/ 11 декабря 2011

Может быть, это может прояснить вас.GLDrawable - это интерфейс, реализованный GLCanvas.К GLDrawable может быть присоединен GLEventListener (поэтому GLCanvas реализует метод addGLEventListener).

GLCanvas является подклассом awt.canvas -> awt.component, поэтому вы можете зарегистрировать прослушиватели мыши для него.

GL-события регистрируются на GLDrawable.События мыши, keuboard и т. Д. Регистрируются на холсте.

...