Bin hier langsam am verzweifeln...
Irgendwie will das hier mit dem menü nichordentlich klappen
Das soll so sein, dass wenn ich auf Kegel drücke dieser der scene zugeaddet wird...
Das will aba nich.warum?
Hier der code:
Am besten die ganzen kommentare etc ignorieren, alles egal
Irgendwie will das hier mit dem menü nichordentlich klappen
Das soll so sein, dass wenn ich auf Kegel drücke dieser der scene zugeaddet wird...
Das will aba nich.warum?
Hier der code:
Am besten die ganzen kommentare etc ignorieren, alles egal
Code:
import javax.vecmath.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import com.sun.j3d.utils.behaviors.vp.*;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Transforma extends JFrame implements ActionListener
{
boolean x;
boolean y;
public Canvas3D myCanvas3D;
// Anfang Variablen
private MenuBar jmb = new MenuBar();
private Menu Korp = new Menu("Körper");
MenuItem Con = new MenuItem("Kegel");
private Menu Tran = new Menu("Transformieren");
private Menu Beenden = new Menu("Datei");
MenuItem Ende = new MenuItem("Ende");
// Ende Variablen
public Transforma()
{
setMenuBar(jmb);
jmb.add(Tran);
jmb.add(Korp);
Korp.add(Con);
jmb.add(Beenden);
Beenden.add(Ende);
Con.addActionListener (this);
Ende.addActionListener (this);
//Standardeinstellung fuer das Betrachteruniversum
myCanvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
//Aufbau des SimpleUniverse:
//Zuerst Erzeugen zusammen mit dem Canvas
SimpleUniverse simpUniv = new SimpleUniverse(myCanvas3D);
//Standardpositionierung des Betrachters
simpUniv.getViewingPlatform().setNominalViewingTransform();
//Die Szene wird in dieser Methode erzeugt.
createSceneGraph(simpUniv);
//Hinzufuegen von Licht
addLight(simpUniv);
//Hierdurch kann man mit der Maus den Betrachterstandpunkt veraendern
OrbitBehavior ob = new OrbitBehavior(myCanvas3D);
ob.setSchedulingBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0),Double.MAX_VALUE));
simpUniv.getViewingPlatform().setViewPlatformBehavior(ob);
//Darstellung des Canvas/Fensters:
setTitle("Transformationen");
setSize(1000,800);
getContentPane().add("Center", myCanvas3D);
setVisible(true);
}
public static void main(String[] args)
{
Transforma staticScene = new Transforma();
}
//In dieser Methode werden die Objekte der Szene aufgebaut und dem
//SimpleUniverse su hinzugefuegt.
public void createSceneGraph(SimpleUniverse su)
{
Appearance myApp = new Appearance();
setToMyDefaultAppearance(myApp,new Color3f(0.0f,0.0f,0.8f),new Color3f(0.0f,0.0f,0.5f));
Appearance rot = new Appearance();
setToMyDefaultAppearance(rot,new Color3f(0.0f,0.8f,0.0f), new Color3f(0.0f,0.5f,0.0f));
float Kante = 0.2f;
Cone Cone = new Cone(0.1f,0.8f,myApp);
//*** Die Wurzel des Graphen, der die Szene enthaelt. ***
BranchGroup scene = new BranchGroup();
//Die folgenden drei Zeilen erzeugen einen weißen Hintergrund.
Background bg = new Background(new Color3f(1.0f,1.0f,1.0f));
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),Double.MAX_VALUE);
bg.setApplicationBounds(bounds);
scene.addChild(bg);
scene.compile();
su.addBranchGraph(scene);
if
(x==true)
{
scene.addChild(Cone);
}
}
public static void setToMyDefaultAppearance(Appearance myApp, Color3f col, Color3f col2)
{
myApp.setMaterial(new Material(col,col2,col,col,100.0f));
}
public void addLight(SimpleUniverse su)
{
BranchGroup bgLight = new BranchGroup();
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), Double.MAX_VALUE);
Color3f lightColour1 = new Color3f(1.0f,1.0f,1.0f);
Vector3f lightDir1 = new Vector3f(-1.0f,0.0f,-0.5f);
DirectionalLight light1 = new DirectionalLight(lightColour1, lightDir1);
light1.setInfluencingBounds(bounds);
Vector3f lightDir2 = new Vector3f(0.5f,0.0f,1.0f);
DirectionalLight light2 = new DirectionalLight(lightColour1, lightDir2);
light2.setInfluencingBounds(bounds);
bgLight.addChild(light1);
bgLight.addChild(light2);
su.addBranchGraph(bgLight);
}
public void actionPerformed (ActionEvent e)
{ String Klick = e.getActionCommand();
if (Klick == "Kegel")
{
x=true ;
}
if (Klick == "Ende")
{
System.exit(0);
}
}
}