因此,我们有一个如下的应用程序结构:
在EC_GUI构造函数中,我初始化了glViewer
private void initGlViewer() {
/**
* Viewer.
*/
glViewer = new GLViewer();
glViewer.setup();
centerPanel.add(glViewer.getNewtCanvasAWT());
}
glViewer实现GLEventListener,如下所示
public GLViewer() {
GLProfile gLProfile = GLProfile.getDefault();
GLCapabilities gLCapabilities = new GLCapabilities(gLProfile);
glWindow = GLWindow.create(gLCapabilities);
/*
* We combine NEWT GLWindow inside existing AWT application (the main JFrame)
* by encapsulating the glWindow inside a NewtCanvasAWT canvas.
*/
newtCanvasAWT = new NewtCanvasAWT(glWindow);
}
@Override
public synchronized void keyPressed(KeyEvent ke) {
System.out.println("keyPressed " + ke.getKeyCode());
嗯,有时我会遇到关于触发的不一致。让我们举一个例子,当我按下组合Ctrl+O打开FileChooser时。
这是应该的:
keyPressed 17
List of pressed inputs
ctrl
keyPressed 79
List of pressed inputs
ctrl
o
keyReleased 17
keyReleased 79
2014.10.09, 10:53:49 [INFORMATION] Open a project ...
2014.10.09, 10:53:49 [INFORMATION] Opening file chooser for load.
2014.10.09, 10:53:55 [INFORMATION] User clicked 'cancel' in file chooser dialog.
在这里,您可以看到我按下ctrl(17),然后o(17),它们都被释放,并显示fileChooser。然后我退出,你们可以在最后一行中看到。
keyPressed 17
List of pressed inputs
ctrl
keyPressed 79
List of pressed inputs
ctrl
o
keyReleased 17
2014.10.09, 10:57:34 [INFORMATION] Open a project ...
2014.10.09, 10:57:34 [INFORMATION] Opening file chooser for load.
2014.10.09, 10:57:35 [INFORMATION] User clicked 'cancel' in file chooser dialog.
keyPressed 17
List of pressed inputs
ctrl
keyReleased 79
2014.10.09, 10:57:36 [INFORMATION] Open a project ...
2014.10.09, 10:57:36 [INFORMATION] Opening file chooser for load.
2014.10.09, 10:57:38 [INFORMATION] User clicked 'cancel' in file chooser dialog.
keyPressed 17
List of pressed inputs
ctrl
keyPressed 79
List of pressed inputs
ctrl
o
keyReleased 17
2014.10.09, 11:08:57 [INFORMATION] Open a project ...
2014.10.09, 11:08:57 [INFORMATION] Opening file chooser for load.
2014.10.09, 11:08:58 [INFORMATION] User clicked 'cancel' in file chooser dialog.
keyPressed 17
List of pressed inputs
ctrl
keyReleased 79
2014.10.09, 11:08:59 [INFORMATION] Open a project ...
2014.10.09, 11:08:59 [INFORMATION] Opening file chooser for load.
2014.10.09, 11:09:02 [INFORMATION] User clicked 'cancel' in file chooser dialog.
keyReleased 79
keyReleased 17
keyReleased 79
我通过在每个KeyPressed/KeyReleased事件中检查按下的修饰符,并通过keyEvent.isxDown()查询每个X修饰符来解决这个问题
JOGL 是Java对于OpenGl的绑定(Java Bindings for OpenGL). 示例代码: import net.java.games.jogl.*;public class HelloWorld { public static void main (String args[]) { try { System.loadLibrary("jogl")
主要内容:JOGL 内置Primitive参数, JOGLDisplay() 方法, JOGL Primitive绘制线 示例, 作为一个开放的图形库,我们可以在 JOGL 中绘制不同的形状,如圆形、三角形、正方形。因此,为了绘制这些形状,Open GL 提供了有助于 JOGL 绘制 2D 和 3D 尺寸图形的基元。 OpenGL Primitive 提供了各种内置参数,根据这些参数可以绘制不同的形状。每个参数在绘制图形中都有一些特定的作用。 JOGL 内置Primitive参数 以下是 JOG
主要内容:JOGL GLCanvas 类,JOGL GLJPanel 类,JOGL GLCapibilities类 在本节中,我们将了解 JOGL 提供的类。通过这些类,我们可以在Java代码中添加OpenGL的功能。 以下是 JOGL 提供的重要类: GLCanvas 和 GLJPanel 类是实现 GLAutoDrawable 接口并用作 Open GL 命令的绘图表面的 GUI 类。 GLCanvas 类 GLJPanel 类 GLProfile 类 GLCapabilities 类 JO
主要内容:JOGL GLEventListener 接口,JOGL GLEventListener 方法,JOGL GLAutoDrawable 接口,JOGL GLAutoDrawable 方法要创建一个JOGL程序,需要了解以下接口: GLEventListener 接口 GLAutodrawable 接口 JOGL GLEventListener 接口 GLEventListener 接口存在于javax.media.opengl包中。它提供了一种基于事件的机制来执行 OpenGL 渲染。
在本节中,我们将了解如何在我们的操作系统中安装 JOGL。因此,要下载和安装 JOGL,请按照以下步骤操作: 在安装JOGL之前,需要在我们的系统中安装Java。因此,如果我们的系统中未安装 Java,请按照以下链接进行安装。如何在 Java 中设置路径 安装 Java 后,请按照以下链接下载 JOGL。下载包含在黑色矩形中的 zip 文件并将其解压缩。下载JOGL 下载 gluegen的 z
主要内容:什么是开放图形库 (OpenGL)?,JOGL的历史,Java本机接口JOGL(Java 开放图形库)是一个包装库,它允许将 OpenGL 与 Java 编程语言一起使用。因此,程序员可以在 JOGL 的帮助下轻松地将计算机图形嵌入 Java 代码中。 JOGL 是一个开源库,可以访问 OpenGL 的完整 API。因此,它继承了 OpenGL 的所有特性。JOGL 能够在任何类型的操作系统上执行,例如 Window、Linux 和 Mac,没有任何缺陷。 什么是开