别的不多说,直接贴代码
rotate.java: import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import vrml.external.Browser;
import vrml.external.Node;
import vrml.external.field.*;
public class rotate extends JApplet
{
Browser browser;
Node sensor;
JTextField textOfRotate;
JLabel theRotate;
public void start (){
browser=Browser.getBrowser(this);
sensor=browser.getNode("ball");
DefObserver observer=new DefObserver();
observer.init(browser);
sensor.getEventOut("rotation_changed").advise((EventOutObserver)observer,(Object)textOfRotate);
}
public void init(){
Container contentpane=getContentPane();
textOfRotate=new JTextField("",15);
theRotate=new JLabel("转动角度为:");
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(1,2));
panel.add(textOfRotate);
panel.add(theRotate);
contentpane.add(panel);
}
} DefObserver.java: import java.awt.*;
import javax.swing.*;
import vrml.external.Browser;
import vrml.external.Node;
import vrml.external.field.*;
public class DefObserver implements EventOutObserver{
EventOutSFRotation rotat;
float rotateOfBall;
Node ball;
public void init(Browser browser){
ball=browser.getNode("ball");
}
public void callback(EventOut event,double timeStamp,Object data){
rotat=(EventOutSFRotation)ball.getEventOut("rotation_changed");
rotateOfBall=(rotat.getValue())[3];
((JTextField)data).setText(""+rotateOfBall);
}
} rotate.wrl:
#VRML V2.0 utf8 DEF ball Transform {
children Shape {
appearance Appearance {
material Material {diffuseColor 0.5 0.4 0.2 shininess 0.5}
}
geometry Box {size 2 4 2}
}
}
DEF pos OrientationInterpolator {
key [0 0.25 0.5 0.75 1]
keyValue [0 1 0 0,0 1 0 1.256,0 1 0 2.51,0 1 0 3.77,0 1 0 5.026]
}
DEF timer TimeSensor {
loop TRUE
cycleInterval 16
}
ROUTE timer.fraction_changed TO pos.set_fraction
ROUTE pos.value_changed TO ball.rotation
monitor.html:
<BODY>
<BR>
<CENTER>
<embed src="rotate.wrl" border=0 height=400 width=500>
</CENTER>
<BR>
<CENTER>
<APPLET CODE="rotate.class" WIDTH="450" HEIGHT="100" >
</APPLET>
</CENTER>
</BODY>
</HTML>
我做了一个简单的EAI监听VRML场景事件,编译都没有问题,打开monitor.html后出现问题:java.lang.NoClassDefFoundError: vrml/external/field/EventOutObserver
原本我的ie装了microsoft vm,用Java awt做没有问题,可以运行,但是改成现在的java Swing,直接用Jre1.3,却不行了,不知道是什么原因?请高手帮帮我
rotate.java: import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import vrml.external.Browser;
import vrml.external.Node;
import vrml.external.field.*;
public class rotate extends JApplet
{
Browser browser;
Node sensor;
JTextField textOfRotate;
JLabel theRotate;
public void start (){
browser=Browser.getBrowser(this);
sensor=browser.getNode("ball");
DefObserver observer=new DefObserver();
observer.init(browser);
sensor.getEventOut("rotation_changed").advise((EventOutObserver)observer,(Object)textOfRotate);
}
public void init(){
Container contentpane=getContentPane();
textOfRotate=new JTextField("",15);
theRotate=new JLabel("转动角度为:");
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(1,2));
panel.add(textOfRotate);
panel.add(theRotate);
contentpane.add(panel);
}
} DefObserver.java: import java.awt.*;
import javax.swing.*;
import vrml.external.Browser;
import vrml.external.Node;
import vrml.external.field.*;
public class DefObserver implements EventOutObserver{
EventOutSFRotation rotat;
float rotateOfBall;
Node ball;
public void init(Browser browser){
ball=browser.getNode("ball");
}
public void callback(EventOut event,double timeStamp,Object data){
rotat=(EventOutSFRotation)ball.getEventOut("rotation_changed");
rotateOfBall=(rotat.getValue())[3];
((JTextField)data).setText(""+rotateOfBall);
}
} rotate.wrl:
#VRML V2.0 utf8 DEF ball Transform {
children Shape {
appearance Appearance {
material Material {diffuseColor 0.5 0.4 0.2 shininess 0.5}
}
geometry Box {size 2 4 2}
}
}
DEF pos OrientationInterpolator {
key [0 0.25 0.5 0.75 1]
keyValue [0 1 0 0,0 1 0 1.256,0 1 0 2.51,0 1 0 3.77,0 1 0 5.026]
}
DEF timer TimeSensor {
loop TRUE
cycleInterval 16
}
ROUTE timer.fraction_changed TO pos.set_fraction
ROUTE pos.value_changed TO ball.rotation
monitor.html:
<BODY>
<BR>
<CENTER>
<embed src="rotate.wrl" border=0 height=400 width=500>
</CENTER>
<BR>
<CENTER>
<APPLET CODE="rotate.class" WIDTH="450" HEIGHT="100" >
</APPLET>
</CENTER>
</BODY>
</HTML>
我做了一个简单的EAI监听VRML场景事件,编译都没有问题,打开monitor.html后出现问题:java.lang.NoClassDefFoundError: vrml/external/field/EventOutObserver
原本我的ie装了microsoft vm,用Java awt做没有问题,可以运行,但是改成现在的java Swing,直接用Jre1.3,却不行了,不知道是什么原因?请高手帮帮我
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货