JOGL - 带有 Swing 的 Canvas
本章向您介绍如何使用 Canvas 和 javax.swing 包中的 JFrame 类绘制 JOGL 基本框架。在这里,我们将实例化 JFrame,并使用 add() 方法将画布对象添加到 JFrame 的实例中。
将 Canvas 与 AWT 结合使用可为您提供具有重量级功能的图形框架。要获得轻量级图形框架,您需要将 GLCanvas 与 Swing 结合使用。在 Swing 中使用 GLCanvas 时,可以将 GLCanvas 直接放置在 JFrame 窗口中,也可以将其添加到 JPanel 中。
下面给出的程序使用 JOGL 的 GLCanvas 类和 javax.swing 包中的 JFrame 类的组合来创建 JOGL 基本框架。
import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLProfile; import javax.media.opengl.awt.GLCanvas; import javax.swing.JFrame; public class BasicFrame implements GLEventListener { @Override public void display(GLAutoDrawable arg0) { // 方法主体 } @Override public void dispose(GLAutoDrawable arg0) { //method body } @Override public void init(GLAutoDrawable arg0) { // 方法主体 } @Override public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) { // 方法主体 } public static void main(String[] args) { //获取 GL2 配置文件的功能对象 final GLProfile profile = GLProfile.get(GLProfile.GL2); GLCapabilities capabilities = new GLCapabilities(profile); // 画布 final GLCanvas glcanvas = new GLCanvas(capabilities); BasicFrame b = new BasicFrame(); glcanvas.addGLEventListener(b); glcanvas.setSize(400, 400); //创建框架 final JFrame frame = new JFrame (" Basic Frame"); //向其中添加画布 frame.getContentPane().add(glcanvas); frame.setSize(frame.getContentPane().getPreferredSize()); frame.setVisible(true); }//end of main }//end of classimport
如果编译并执行上述程序,将生成以下输出。 它显示了当我们将 GLCanvas 与 Swing 窗口结合使用时形成的基本框架。
