// Add/Remove import java.awt.*; import java.applet.*; import vrml.external.field.*; import vrml.external.Node; import vrml.external.Browser; import vrml.external.exception.*; public class vrml54 extends Applet { // テキストの設定。 TextArea output = null; boolean error = false; Browser browser; Node root; Node[] shape; EventInMFNode addChildren; EventInMFNode removeChildren; public void init() { System.out.println("AddRemoveTest init()..."); add(new Button("Add Sphere")); add(new Button("Remove Sphere")); output = new TextArea(5, 40); add(output); } public void start() { System.out.println("AddRemoveTest start()..."); output.appendText("\nAddRemoveTest start()...\n"); // ブラウザの取得。 browser = (Browser) vrml.external.Browser.getBrowser(this); output.appendText("Got the browser\n"); System.out.println("Got the browser: " + browser); try { // wrlの中身の、ROOTノードを取得。 root = browser.getNode("ROOT"); // 球を表示する。 addChildren = (EventInMFNode) root.getEventIn("addChildren"); // 球を消去する。 removeChildren = (EventInMFNode) root.getEventIn("removeChildren"); // 球をJavaでも作成することができる。 shape = browser.createVrmlFromString("Shape {\n" + " appearance Appearance {\n" + " material Material {\n" + " diffuseColor 0.2 0.2 0.8\n" + " }\n" + " }\n" + " geometry Sphere {}\n" + "}\n"); } catch (InvalidNodeException e) { output.appendText("PROBLEMS! : " + e + "\n"); error = true; } catch (InvalidEventInException e) { output.appendText("PROBLEMS! : " + e + "\n"); error = true; } catch (InvalidVrmlException e) { output.appendText("PROBLEMS! : " + e + "\n"); error = true; } if (error == false) output.appendText("Initialization OK\n"); } // ボタンが押されたときの設定 public boolean action(Event event, Object what) { if (event.target instanceof Button) { Button b = (Button) event.target; if (b.getLabel() == "Add Sphere") { output.appendText("Sending addChildren event...\n"); addChildren.setValue(shape); } else if (b.getLabel() == "Remove Sphere") { output.appendText("Sending removeChildren event...\n"); removeChildren.setValue(shape); } } return true; } }