// Java 3Dテスト用アプレット // AppearanceTest.java // Copyright (c) 1999 ENDO Yasuyuki // mailto:yasuyuki@timedia.co.jp // http://www.javaopen.org/j3dbook/index.html import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.universe.SimpleUniverse; public class AppearanceTest extends Applet { Appearance ap = null; public AppearanceTest() { this.setLayout(new BorderLayout()); Panel panel = new Panel(); this.add(panel, BorderLayout.NORTH); panel.add(new Label("Width")); TextField tfield = new TextField("1.0", 8); tfield.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { float width = 1.0f; try { width = Float.parseFloat(e.getActionCommand()); System.out.println(width); ap.getLineAttributes().setLineWidth(width); } catch (NumberFormatException ex) { } } }); panel.add(tfield); panel.add(new Label("Pattern")); Choice choice = new Choice(); choice.add("PATTERN_SOLID"); choice.add("PATTERN_DASH"); choice.add("PATTERN_DOT"); choice.add("PATTERN_DASH_DOT"); choice.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { String item = (String)e.getItem(); System.out.println(item); if (item.equals("PATTERN_SOLID")) { ap.getLineAttributes().setLinePattern(LineAttributes.PATTERN_SOLID); } else if (item.equals("PATTERN_DASH")) { ap.getLineAttributes().setLinePattern(LineAttributes.PATTERN_DASH); } else if (item.equals("PATTERN_DOT")) { ap.getLineAttributes().setLinePattern(LineAttributes.PATTERN_DOT); } else if (item.equals("PATTERN_DASH_DOT")) { ap.getLineAttributes().setLinePattern(LineAttributes.PATTERN_DASH_DOT); } } }); panel.add(choice); Checkbox check = new Checkbox("Antialias", false); check.addItemListener( new ItemListener() { public void itemStateChanged(ItemEvent e) { int state = e.getStateChange(); if (state == ItemEvent.SELECTED) { ap.getLineAttributes().setLineAntialiasingEnable(true); } else if (state == ItemEvent.DESELECTED) { ap.getLineAttributes().setLineAntialiasingEnable(false); } } }); panel.add(check); GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas = new Canvas3D(config); this.add(canvas, BorderLayout.CENTER); SimpleUniverse universe = new SimpleUniverse(canvas); universe.getViewingPlatform().setNominalViewingTransform(); BranchGroup scene = createSceneGraph(); universe.addBranchGraph(scene); } private BranchGroup createSceneGraph() { BranchGroup root = new BranchGroup(); Point3d[] vertices = new Point3d[6]; vertices[0] = new Point3d(-0.7, -0.1, 0.0); vertices[1] = new Point3d(-0.3, -0.7, 0.0); vertices[2] = new Point3d(0.2, -0.7, 0.0); vertices[3] = new Point3d(0.8, 0.0, 0.0); vertices[4] = new Point3d(0.6, 0.4, 0.0); vertices[5] = new Point3d(-0.6, 0.6, 0.0); LineArray geometry = new LineArray(vertices.length, GeometryArray.COORDINATES); geometry.setCoordinates(0, vertices); Shape3D shape = new Shape3D(geometry); ap = new Appearance(); ap.setCapability(Appearance.ALLOW_LINE_ATTRIBUTES_READ); LineAttributes lattr = new LineAttributes(); lattr.setCapability(LineAttributes.ALLOW_WIDTH_WRITE); lattr.setCapability(LineAttributes.ALLOW_PATTERN_WRITE); lattr.setCapability(LineAttributes.ALLOW_ANTIALIASING_WRITE); lattr.setLineWidth(1.0f); lattr.setLinePattern(LineAttributes.PATTERN_SOLID); ap.setLineAttributes(lattr); shape.setAppearance(ap); root.addChild(shape); return root; } public static void main(String[] args) { Frame frame = new MainFrame(new AppearanceTest(), 500, 500); } }