您的位置:首页 > 产品设计 > UI/UE

J3d终于调试成功了,感觉java在UI设计方面,还是很复杂

2011-05-23 20:39 211 查看
鼓捣了半天,终于成功了,j3d是sun的官方扩充包,主要用于3d显示,调用的是本地库,所以速度算不上慢,但是编写起来也是有一定的复杂度的,如果有一个好一点的框架就好了,只能给爱好者玩玩了,java做企业web还是更靠点谱,不过我对企业什么的很没兴趣,而且还发现了一个IBM的IFRAME包,不是html里的<iframe></iframe>里的标签的意思,是一个基于swing的UI框架,可以设计出比较复杂的UI,效果还不错,透明框架什么的,还有不规则框架都可以做,不过也相当难写,这是我的亲身体会,额!

重新购买了域名和空间,希望别再和谐我的博客了,我一个悲剧程序员容易吗我,我真的什么也不知道,什么也不知道阿!




Code:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.media.j3d.*;

import javax.vecmath.*;

import com.sun.j3d.utils.universe.*;

import com.sun.j3d.utils.geometry.*;



public class Titles {



public static void main(String[] args) {

Titles t = new Titles();

t.setUp();

}



public void setUp() {

JFrame jf = new JFrame("Welcome");

// kill the window on close

jf.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent winEvent) {

System.exit(0);

}

});

JPanel panel = new JPanel();

panel.setLayout(new GridLayout(1, 1, 2, 2));



GraphicsConfiguration config = SimpleUniverse

.getPreferredConfiguration();

Canvas3D canvas3D = new Canvas3D(config);

canvas3D.setSize(360, 160);

SimpleUniverse universe = new SimpleUniverse(canvas3D);

BranchGroup group = new BranchGroup();

addObjects(group);

addLights(group);

universe.getViewingPlatform().setNominalViewingTransform();

universe.addBranchGraph(group);

panel.add(canvas3D);

jf.getContentPane().add(panel, BorderLayout.CENTER);

jf.pack();

jf.setVisible(true);

}



public void addLights(BranchGroup group) {

BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),

1000.0);



Color3f light1Color = new Color3f(1.0f, 1.0f, 1.0f);

Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);

DirectionalLight light1 = new DirectionalLight(light1Color,

light1Direction);

light1.setInfluencingBounds(bounds);

group.addChild(light1);



// Set up the ambient light

Color3f ambientColor = new Color3f(.1f, .1f, .1f);

AmbientLight ambientLightNode = new AmbientLight(ambientColor);

ambientLightNode.setInfluencingBounds(bounds);

group.addChild(ambientLightNode);

}



private void addObjects(BranchGroup group) {

Font3D f3d = new Font3D(new Font("TestFont", Font.PLAIN, 2),

new FontExtrusion());

Text3D text = new Text3D(f3d, new String("Java3D.org"), new Point3f(-3.5f,

-.5f, -4.5f));



text.setString("Java3D.org");

Color3f white = new Color3f(1.0f, 1.0f, 1.0f);

Color3f blue = new Color3f(.2f, 0.2f, 0.6f);

Appearance a = new Appearance();

Material m = new Material(blue, blue, blue, white, 80.0f);

m.setLightingEnable(true);

a.setMaterial(m);



Shape3D sh = new Shape3D();

sh.setGeometry(text);

sh.setAppearance(a);

TransformGroup tg = new TransformGroup();

Transform3D t3d = new Transform3D();

Transform3D tDown = new Transform3D();

Transform3D rot = new Transform3D();

Vector3f v3f = new Vector3f(-1.6f, -1.35f, -6.5f);

t3d.setTranslation(v3f);

rot.rotX(Math.PI / 5);

t3d.mul(rot);

v3f = new Vector3f(0, -1.4f, 0f);

tDown.setTranslation(v3f);

t3d.mul(tDown);

tg.setTransform(t3d);

tg.addChild(sh);

group.addChild(tg);



}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐