JAVA的OPENGL:JOGL入门例子(六)---NetBeans可视化与JOGL结合

有人会问:以前都用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();
           
        }
 

 

终于完成,运行效果如图23。头一次写这么完整的教程,大家有什么意见请指教,代码已经上传,名为 SRC.rar

没有试过把代码放到eclipse下运行,大概会不支持,想试试的朋友直接复制SRC里面的文件过去就行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值