有人会问:以前都用eclipse作为JOGL的开发工具,为什么忽然要用NetBeans呢?
看看下面图片:
很明显,,你们看到的不是JFrame运行以后的效果,而是类似于VC++6.0,或或者VS2005,2008系列的可视化
窗体开发界面,对,NetBeans作为SUN发布的IDE,功能十分全面,然而我不是写文章来介绍NetBeans是多么多么好用的,目的只是为了为大
家介绍 可视化JFrame编程与JOGL的混合应用。
点击 “改变按钮” 以后的效果:
编幅有限,我们将跳过NetBeans下JOGL插件的安装,直接进入开发实践中去,请注意,NetBeans下是一
定要安装JOGL插件的,和eclipse环境下很不相同,你们可以从我发的第一章教程例子里找到eclipse下开发JOGL的内容。至于
NetBeans下JOGL插件的安装,你可以链接到: 集成Java Desktop Application和JOGL(一)
又或者直接在网上搜索安装方
法。
我们这里用的是NetBeans6.5,当安装好JOGL插件,你就可以在主界面点击菜单栏
文件---新建项目
然后就弹出 新建项目窗口
选的是第三个 JOGL Application (From Designer,GLCanvas)点 下一步 ,
在Project
Name把项目的名字改为你想要的名字,Project Location就是项目文件夹的位置,Project
Package为包的名字,我们这里默认org.yourorghere包。然后点完成。成功建立以后:
然后对着项目点 右键-----运行,就会看到效果:
这个当然不是最终效果,我们要的是图2里面的效果,而且现在还没添加可视化编辑窗体。
点击我们建好的项目----新建----JFrame窗体,随便命名,这里就直接为 NewJFrame ,包名为org.yourorghere,点 完成。
双击NewJFrame.java,就能看到我们想要的可视化界面,
接着我们点右边的 组件面板,找到我们要用的组件,
分别是:GLCanvas Swing控件里的标签(JLabel) 按钮(JButton)
分别把它们拖动到设计面板的JFrame里去,GLCanvas拖放好以后,还要手动给一下大小,不然本身的太小,你很难见到它,要是你找不到它, 你可以在左下方 检查器 面板找到,改变大小的方法可以是直接手动拖放改,也可以在属性面板改大小。
再把4个JButton和JLabel 拖放到适合的位置,
右键分别点每一个按钮,编辑文本,修改显示的文字, 分别为 改变, 取消 ,+, -, 线宽:1
得到效果就和图1一样了。
下一步,我们从设计面板上面的 设计 点到 源(S) ,
添加代码
GLCanvas canvas;
GLCapabilities
capabilities;
public static FPSAnimator animator;
GLRenderer
render = new GLRenderer(); // 这是我们的GLEventlistener ,重点,由系统生成,等一下要到.JAVA文件下修改一下代码。
然后点换到 设计(D) 面板,右键单击我们原本拖放好的 GLCanvas,点定制代码
打开定制代码窗体,添加 代码c
apabilities = new GLCapabilities();
gLCanvas1=new GLCanvas(capabilities);
gLCanvas1.addGLEventListener(render);
animator=new
FPSAnimator(gLCanvas1,60,true);
然后关闭代码定制器,回 到 设计 面板,右键单击每一个按钮,然后点属性,为它们添加上鼠 标点击事件
添加方法就是在actionPerformed后面一栏双击左键。
-->
四个按钮都分别添加上actionPerformed事件以后,双击 项目 面板里边的
GLRenderer.java文件来到GLRenderer类 添加变量: private float rquad = 0.0f;
private float rtri = 0.0f;
public
boolean isBtndown = false;
public float linewidth=1.0f;
添加完成以后,切换到NewJFrame,我们来为每个按钮的actionPerformed事件添加代码
然后修改NewJFrame的 public static void main(String args[])方法里的内容为
这 句UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
用作修改当前窗体为标准WINDOWS窗体,要想用其他窗体,请修改里面的参数,这里不列举 了。
最后来到GLRenderer.java里,修改display(GLAutoDrawable drawable)里的代码,你可以直接复制了。
public void display(GLAutoDrawable drawable) {
GL
gl = drawable.getGL();
GLUT glut=new GLUT();
double x,y;
// Clear the drawing area
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Reset the current matrix to the "identity"
gl.glLoadIdentity();
// Move the "drawing cursor" around
gl.glTranslatef(-1.5f, 0.0f, -6.0f);
// Drawing Using Triangles
if (isBtndown) {
gl.glRotatef(rquad, 0.0f, 0.0f, 1.0f);
gl.glLineWidth(linewidth);
gl.glBegin(GL.GL_LINE_STRIP);
for (double i = 0; i < 60; i += 0.1) {
//这个for语句里画螺旋,由glBegin开始,glEnd
float red = (float) ((Math.random())*(1.0f)); //随机红
float
green = (float) ((Math.random())*(1.0f)); //随机绿
float blue = (float) ((Math.random())*(1.0f));
gl.glColor3f(red,
green, blue);
x = Math.sin(i) * i /10 ;
y =
Math.cos(i) * i/10 ;
gl.glVertex2d(x, y);
}
gl.glEnd();
}
else{
gl.glBegin(GL.GL_TRIANGLES);
gl.glColor3f(1.0f, 0.0f,
0.0f); // Set the current drawing color to red
gl.glVertex3f(0.0f, 1.0f, 0.0f); // Top
gl.glColor3f(0.0f, 1.0f, 0.0f); // Set the current drawing color to
green
gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left
gl.glColor3f(0.0f, 0.0f, 1.0f); // Set the current drawing color to
blue
gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right
// Finished Drawing The Triangle
gl.glEnd();
}
终于完成,运行效果如图2图3。头一次写这么完整的教程,大家有什么意 见请指教,代码已经上传,名为 SRC.rar
没有试过把代码放到eclipse下运行,大概会不支持,想试试的朋友直接 复制SRC里面的文件过去就行。