簡體   English   中英

如何在JOGL中接受用戶鍵盤輸入?

[英]How to accept user keyboard input in JOGL?

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;

// This is not important currently. 
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();
}

// I want to test this!
@Override
public void keyPressed(KeyEvent e) {
    char pressed = e.getKeyChar();
    if (pressed == 'a') {
        System.out.println('a');
    }
}

@Override
public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub

}
}

我似乎無法為KeyListener注冊畫布。 我得到(類型組件中的方法addKeyListener(KeyListener)不適用於arguments(Activity01))。 我在行使這項權利嗎?

您實施的是錯誤的KeyListener,另外還有一個

java.awt.event.KeyListener

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM