Как получить доступ к клавиатуре в приложении Eclipse RCP/LWJGL?

Я работаю над примерами NeHe OpenGL, используя LWJGL для привязки OpenGL внутри приложения Eclipse RCP.

Моя графика OpenGL отображается внутри холста RCP, а не в отдельном окне.

Урок 07 показывает, как пользоваться клавиатурой. Если я попытаюсь сделать:

Keyboard.create();

Я получаю сообщение об ошибке, что "Дисплей" (OpenGL) не создан.

Если я создаю «Дисплей» OpenGL с помощью org.lwjgl.opengl.Display.create(), я получаю новое окно.

Итак, как мне получить доступ к клавиатуре без создания нового окна?


person Sebastien Diot    schedule 05.08.2011    source источник
comment
Ну, если кому интересно, то это выглядит так: glcanvas = new GLCanvas(...); glcanvas.addKeyListener (новый KeyListener () {...});   -  person Sebastien Diot    schedule 13.08.2011


Ответы (1)


Вы не можете использовать клавиатуру без дисплея из-за того, как LWJGL работает за кулисами. Лучше всего просто использовать события AWT. Вы можете написать свой собственный класс ввода, который может выглядеть примерно так.

public class Input implements KeyListener {
    private boolean aDown; //is the A key down?
    //Ect, for all needed keys
    public void keyPressed(KeyEvent ke) {
        switch (ke.getKeyCode()) {
            case KeyEvent.VK_A: aDown = true; break;
            //and so on for all other needed keys.
        }
    }

    public void keyReleased(KeyEvent ke) {
        switch (ke.getKeyCode()) {
            case KeyEvent.VK_A: aDown = false; break;
            //and so on for all other needed keys.
        }
    }

    public void keyTyped(KeyEvent ke) {} //Do nothing

    public void isADown() {return aDown;}

}
person bob_twinkles    schedule 08.09.2011
comment
Что ж, я так и сделал, как уже сказал в своем комментарии. Но все равно спасибо. - person Sebastien Diot; 08.09.2011