资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
import javax.swing.*; /时钟 import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.*; import java.util.Calendar; import java.util.GregorianCalendar; class Clock extends JFrame implements ActionListener int x,y,x0,y0,r,h,olds_x,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,ss,mm,hh,old_m,old_h,ang; final double RAD=Math.PI/180; /度数转换成弧度的比例 /构造函数创建了一个窗体 public Clock() super(“时钟 “); /设置标题 setSize(250,250); /设置窗口尺寸 setBackground(Color.WHITE); /设置背景颜色 setLocation(300,150); /设置窗口位置坐标 setResizable(false); /使窗口可以最小化和关闭,但是不能任意改变大小 setVisible(true); /设置组建可见 int delay = 100; /设置延时 /创建一个监听事件 ActionListener drawClock = new ActionListener() public void actionPerformed(ActionEvent evt) repaint(); ; new Timer(delay,drawClock).start(); /创建时间计数器,每秒触发一次 public void actionPerformed(ActionEvent e)/实现 ActionListener 接口必须实现的方法 /绘制图形 public void paint(Graphics g) Graphics2D g2D = (Graphics2D)g; Insets insets = getInsets(); int L = insets.left/2,T = insets.top/2; h = getSize().height; g.setColor(Color.black); /画圆 g2D.setStroke(new BasicStroke(4.0f); g.drawOval(L+40,T+40,h-80,h-80); r=h/2-40; x0=40+r-5+L; y0=40+r-5-T; ang=60; /绘制时钟上的12 个数字 for(int i=1;i0) g.setColor(getBackground(); g.drawLine(x0,y0,olds_x,h-olds_y); Else old_m = mm; old_h = hh; /绘制秒针 x=(int)(r*0.9*Math.cos(RAD*ss)+x0;/长度 y=(int)(r*0.9*Math.sin(RAD*ss)+y0-2*T; g.setColor(Color.black);/ 指针颜色 g.drawLine(x0,y0,x,h-y);/ 轨迹 olds_x=x; olds_y=y; g2D.setStroke(new BasicStroke(2.2f);/ 分针粗细 /擦除分针 if(old_m!=mm) g.setColor(getBackground(); g.drawLine(x0,y0,oldm_x,h-oldm_y); /绘制分针 x=(int)(r*0.7*Math.cos(RAD*mm)+x0;/长度 y=(int)(r*0.7*Math.sin(RAD*mm)+y0-2*T; g.setColor(Color.red);/ 颜色 g.drawLine(x0,y0,x,h-y); oldm_x=x; oldm_y=y; old_m=mm; g2D.setStroke(new BasicStroke(3.4f);/ 时针粗细 /擦除时针 if(old_h!=hh) g.setColor(getBackground(); g.drawLine(x0,y0,oldh_x,h-oldh_y); /绘制时针 x=(int)(r*0.5*Math.cos(RAD*hh)+x0;/长度 y=(int)(r*0.5*Math.sin(RAD*hh)+y0-2*T; g.setColor(Color.red);/ 颜色 g.drawLine(x0,y0,x,h-y); oldh_x=x; oldh_y=y; old_h=hh; public static void main(String args) Clock c = new Clock(); 3D 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.utils.behaviors.mouse.MouseRotate; import com.sun.j3d.utils.behaviors.mouse.MouseZoom; import com.sun.j3d.utils.behaviors.mouse.MouseTranslate; publicclass AWTFrameJ3D privatestaticfinallongserialVersionUID = 1L; Canvas3D cv = null; publicstaticvoid 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() publicvoid 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虚拟世界场景 */ publicvoid 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.w
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号