小菜乐园

生活就是一杯茶

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  8 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

 

我照着《VRML与Java编程技术》,写了这样的一个程序,但是没效果出来

请高手们指教啊!!!

vrml文件:

#VRML V2.0 utf8

Viewpoint
{
 position 0 0 15
 orientation 0 0 1 0
 fieldOfView 0.8
}

Background
{
 skyColor [ 0 0 0.2,
       0.1 0.1 0.8,
       0.7 0.8 0.9
      ]
 skyAngle [1 1.57]
 groundColor [ 0.0 0.0 0.0,
        0.5 0.4 0.3,
        0.3 0.3 0.3
       ]
 groundAngle [1 1.57]
}

DEF ball1 Transform
{
 translation -3 0 0
 children
 [
   DEF Touch1 TouchSensor{}
   Shape
   {
    appearance Appearance
    {
      material DEF SphereColor Material
      {
       diffuseColor 1 0 0
      }
    }
     geometry Sphere{}
   }
 ]
}

DEF ball2 Transform
{
 translation 3 0 0
 children
 [
   DEF Touch2 TouchSensor{}
   Shape
   {
    appearance Appearance
    {
      material DEF SphereColor2 Material
      {
       diffuseColor 0 1 0
      }
    }
     geometry Sphere{}
   }
 ]
}

DEF openWnd Script
{
 url"layOut.class"
 eventIn SFBool clicked
 eventIn SFBool clicked2
}
ROUTE Touch1.isActive TO openWnd.clicked
ROUTE Touch2.isActive TO openWnd.clicked2

 

 

 

Java窗体程序:

import java.awt.*;
import javax.swing.*;

public class TheFirstWindow extends Frame{
 
 public static void main(String args[]){
  TheFirstWindow opp = new TheFirstWindow();
  opp.show();
  opp.resize(500,400);
  opp.setTitle("我的窗口");
 }
 
 public TheFirstWindow(){
  Label labely = new Label("欢迎进入我的第一个窗口",Label.LEFT);
  add(labely);
  Panel pp = new Panel();
  pp.add(new Button("打开"));
  pp.add(new Button("关闭"));
  pp.add(new Button("更多内容"));
  pp.setBackground(Color.red);
  add(pp);
  Panel p = new Panel();
  p.add(new TextArea("",6,25));
  p.add(new Button("保存"));
  p.add(new Button("我要留言"));
  p.add(new Button("全部删除"));
  p.setBackground(Color.green);
  setLayout(new FlowLayout());
  add(p);
 }
 
 public boolean handleEvent(Event e){
  TextField t = new TextField();
  switch(e.id){
   case Event.WINDOW_DESTROY:
    dispose();
    System.exit(0);
    default:
     return super.handleEvent(e);
  }
 }

}

 

 

 

与vrml通信的程序:

import vrml.*;
import vrml.field.*;
import vrml.node.*;


public class layOut extends Script{
 
 TheFirstWindow myWindow;
 
 public void initialize()
 {
   myWindow = new TheFirstWindow();
 }
 
 public void processEvent(Event e)
 {
  ConstSFBool v = (ConstSFBool)e.getValue();
  if(v.getValue())
  {
   if(e.getName().equals("clicked") == true)
   {
    myWindow.show();
   }
   else
   {
    myWindow.hide();
   }
  }
 }
}

posted on 2007-08-15 11:39 小菜 阅读(962) 评论(1)  编辑  收藏

Feedback

# re: java如何在vrml里弹出窗口 2007-08-16 10:59 小菜
网上找到的,不知道有没有
-----------------------------------------------------------------
如果用的是cortona,需要用jdk1.3或更低版本的jdk编译。个人猜测是因为cortona使用的microsoft的jvm,微软已经停止开发了,对java的一些新特性不支持。
推荐使用OctagaPlayer。不管是使用web3d提供的vrml97.zip还是cortona里的classes.zip包编译生成的class文件,它都能识别出来。不过对于System.out.println()不能输出到控制台。调试不方便。已经确认jdk1.3,1.5编译的class文件可以识别。
-----------------------------------------------------------------  回复  更多评论
  

# re: java如何在vrml里弹出窗口 2007-08-28 12:08 姜利阳
百度一下  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: