package timer.com.cn;
import java.applet.Applet;
import java.awt.BorderLayout;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.*;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import javax.swing.*; //时钟
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class AWTFrameJ3D
{ private static final long serialVersionUID = 1L;
Canvas3D cv = null;
public static void main(String s[])
{ AWTFrameJ3D hd = new AWTFrameJ3D();
hd.constractJava3D();
}
/* 构造方法 创建Frame和Canvas3D画布对象,并将Canvas3D嵌入到Frame中 */
public AWTFrameJ3D()
{
GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsEnvironment env = GraphicsEnvironment
.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
GraphicsConfiguration config = device.getBestConfiguration(template);
// 新建Canvas3D对象,Canvas3D对象是一个用于显示虚拟世界场景的绘制结果的画布
cv = new Canvas3D(config);
// 新建Frame对象
Frame dframe = new Frame(config);
dframe.setTitle("模型读取中");
dframe.setLayout(new BorderLayout());
// 将Canvas3D对象嵌入到Frame对象中
dframe.add(cv, BorderLayout.CENTER);
dframe.setSize(500, 400);
// 添加窗口监听器实现关闭窗口(Frame),关闭窗口时退出程序
dframe.addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent ev)
{ System.out.print("退出程序!");
System.exit(0);
} }
};
// 使用Toolkit更改Java应用程序标题栏默认图标
Toolkit tk = Toolkit.getDefaultToolkit();
Image image = tk.createImage("images/earth.jpg"); /* image.gif是你的图标 */
dframe.setIconImage(image);
// 使用Toolkit把默认的鼠标图标改成指定的图标:
// Toolkit tk=Toolkit.getDefaultToolkit();
Image img = tk.getImage("images/earth.jpg"); /* mouse.gif是你的图标 */
Cursor cu = tk.createCustomCursor(img, new Point(10, 10), "stick");
dframe.setCursor(cu);
// 现将Frame窗口可视化之后,再绘制3D场景内容
dframe.setVisible(true);
}
/** 构建3D虚拟世界场景 */
public void constractJava3D()
{ // 创建场景图分支
BranchGroup bg = createSceneGraph();
bg.compile();
// 将观察分支关联到一个Canvas3D对象,以显示视图的绘制结果
SimpleUniverse su = new SimpleUniverse(cv);
su.getViewingPlatform().setNominalViewingTransform();
// 把场景图关联到SimpleUniverse对象之后,整个场景就开始绘制了
su.addBranchGraph(bg);
// 现绘制3D场景内容,再将Frame窗口可视化
// dframe.setVisible(true);
}
/** 创建3D场景内容 */
private BranchGroup createSceneGraph()
{ // 创建BranchGroup对象作为根节点
BranchGroup root = new BranchGroup();
// object
Appearance ap = new Appearance();
ap.setMaterial(new Material());
Font3D font = new Font3D(new Font("SansSerif", Font.PLAIN, 1),
new FontExtrusion());
Text3D text = new Text3D(font, "Hello 3D");
Shape3D shape = new Shape3D(text, ap);
// transformation
Transform3D tr = new Transform3D();
tr.setScale(0.5);
tr.setTranslation(new Vector3f(-0.95f, -0.2f, 0f));
TransformGroup tg = new TransformGroup(tr);
root.addChild(tg);
tg.addChild(shape);
// light
PointLight light = new PointLight(new Color3f(Color.white),
new Point3f(1f, 1f, 1f), new Point3f(1f, 0.1f, 0f));
BoundingSphere bounds = new BoundingSphere();
light.setInfluencingBounds(bounds);
root.addChild(light);
return root;
}
}