Login  Register

How to accept user keyboard input?

Posted by k0sar on Nov 14, 2015; 6:35pm
URL: https://forum.jogamp.org/How-to-accept-user-keyboard-input-tp4035778.html

package graphics_activity01;

import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.awt.GLCanvas;
import javax.media.opengl.glu.GLU;
import javax.swing.JFrame;

import com.jogamp.newt.event.KeyEvent;
import com.jogamp.newt.event.KeyListener;
import com.sun.opengl.util.Animator;

public class Activity01 extends JFrame implements GLEventListener, KeyListener {
        GLCanvas canvas;
        Animator an;

        public Activity01() {
                super("KeyListener Activity");

                canvas = new GLCanvas();
                an = new Animator(canvas);

                add(canvas);
                canvas.addGLEventListener(this);
                canvas.setFocusable(true);
                canvas.addKeyListener(this);
               
                setSize(800, 500);
                setVisible(true);
                setLocationRelativeTo(null);
                an.start();
                canvas.requestFocus();

        }

        public void init(GLAutoDrawable drawable) {
                GL2 gl = drawable.getGL().getGL2();
                GLU glu = new GLU();
                gl.glClearColor(0f, 0f, 0f, 0.0f);
                gl.glMatrixMode(GL2.GL_PROJECTION);
                glu.gluOrtho2D(-400, 400, -250, 250);
                gl.glMatrixMode(GL2.GL_MODELVIEW);
        }

        boolean firstRun = true;

        public void display(GLAutoDrawable drawable) {
                /**
                GL2 gl = drawable.getGL().getGL2();
                gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
               
                float[] color = {0.5f,0.0f,0.0f};
                gl.glColor3fv(color ,0);
               
                gl.glPointSize(50);
                gl.glBegin(GL2.GL_POINTS);
                        gl.glVertex2i(100, 100);
                        gl.glVertex2i(-100, 100);
                        gl.glVertex2i(100, -100);
                        gl.glVertex2i(-100, -100);
                        gl.glVertex2i(0,0);
                gl.glEnd();
                **/
        }

        public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
               
        }

        public void dispose(GLAutoDrawable drawable) {

        }

        public static void main(String[] ar) {
                new Activity01();
        }

        @Override
        public void keyPressed(KeyEvent e) {
                char pressed = e.getKeyChar();
                if (pressed == 'a') {
                        System.out.println('a');
                }
        }

        @Override
        public void keyReleased(KeyEvent arg0) {
               
        }
}


This is my code but it gives me an error when I try to register the canvas for the KeyListener. Is this the right way?