您的位置:首页 > 编程语言 > Java开发

Java 3D 教程:6. Java 3D 与用户界面

2012-04-17 12:39 295 查看
ava 3D 与用户界面

Canvas3D

能够绘制三维图形的每块区域都被称为是Canvas3D。它是包含了你环境(universe)中对象视图(view)的长方形。你把画布(canvas)放进帧(frame)中,于是你就创建了能够被显示在画布中的环境。

下面的例子展示了如何在上下端有标签的帧中创建画布。程序能够以applet或者应用的方式运行。

import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import java.awt.GraphicsConfiguration;
import java.awt.BorderLayout;
import java.awt.Label;
import java.applet.Applet;
import com.sun.j3d.utils.applet.MainFrame;
public class CanvasDemo extends Applet
{
public CanvasDemo()
{
setLayout(new BorderLayout());
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas = new Canvas3D(config);
add("North", new Label("This is the top"));
add("Center", canvas);
add("South", new Label("This is the bottom"));
BranchGroup contents = new BranchGroup();
contents.addChild(new ColorCube(0.3));
SimpleUniverse universe = new SimpleUniverse(canvas);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(contents);
}
public static void main(String[] args)
{
CanvasDemo demo = new CanvasDemo();
new MainFrame(demo, 400, 400);
}
}


Java 3D 和 Swing

Canvas3D利用了你计算机的图形卡以加强性能。不幸的是,这也意味着它不能与Sun的swing用户界面控件很好地配合使用。这些控件被称为是“轻量级”的。这些轻量级控件即使应该是在前端的也会被Canvas3D隐藏掉。

对于这个问题我们有若干解决之道:

● 如果你把轻量级和重量级控件放在不同的容器中,则它们可以在一个屏幕上混用。

● 如果你使用了弹出菜单,那么JPopupMenu的静态方法可以修复这个问题:
setDefaultLightWeightPopupEnabled(false);

你也可以使用旧一些的AWT控件代替swing。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: