时钟

3 篇文章 0 订阅
3 篇文章 0 订阅
 

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;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值