j'ai un mini projet qui consiste à développer une application faisant des figures 3D (cube cylindre pyramide et cône )
Je le fait en Java en créant l'interface graphique de l'application sur une frame et j'ai mis le code qui permet de créer la scéne 3D dans une classe (voir le code ci dessous) j'ai apapelé la classe de la scène pour le tracé dans un jbouton comme suit
public void jButton4_actionPerformed(ActionEvent e) { Frame Frame2 = new MainFrame(new Box3D(), 900, 650); }
En executant ça marche mais mon probleme est que la scéne est affichée dans une autre Frame qu'il crée ; alors que moi je veux que la scène soit affichée dans le Frame (l'interface) de mon application. Pouvez vous me dire comment faire de telle sorte que la scène soit affichée sur l'interface de mon application au lieu sur une autre fenetre (frame)
// Etape 1 : // Importation des packages Java 2 import java.applet.Applet; import java.awt.*;
// Etape 2 : // Importation des packages Java 3D import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.universe.*; import javax.media.j3d.*;
public class Box3D extends Applet {
public Box3D() { this.setLayout(new BorderLayout());
// Etape 3 : // Creation du Canvas 3D Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); this.add(canvas3D, BorderLayout.CENTER);
// Etape 4 : // Creation d'un objet SimpleUniverse SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
// Etape 5 : // Positionnement du point d'observation pour avoir une vue correcte de la // scene 3D simpleU.getViewingPlatform().setNominalViewingTransform();
// Etape 6 : // Creation de la scene 3D qui contient tous les objets 3D que l'on veut visualiser BranchGroup scene = createSceneGraph();
// Etape 7 : // Compilation de la scene 3D scene.compile();
// Etape 8: // Attachement de la scene 3D a l'objet SimpleUniverse simpleU.addBranchGraph(scene); }
/** * Creation de la scene 3D qui contient tous les objets 3D * @return scene 3D */ public BranchGroup createSceneGraph() { // Creation de l'objet parent qui contiendra tous les autres objets 3D BranchGroup parent = new BranchGroup();
/************ Partie de code concernant l'animation du cube *************/ /* Elle sera expliquee en details dans les chapitres relatifs aux transformations geometriques et aux animations */ TransformGroup objSpin = new TransformGroup(); objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); Alpha rotationAlpha = new Alpha(-1, 4000); RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, objSpin); BoundingSphere bounds = new BoundingSphere(); rotator.setSchedulingBounds(bounds); objSpin.addChild(rotator); /*************** Fin de la partie relative a l'animation ***************/
// Arriere plan en blanc Background background = new Background(1, 1, 1); background.setApplicationBounds(new BoundingBox()); parent.addChild(background);
// Construction du parallelepipede objSpin.addChild(new Box(0.5f, 0.5f, 0.5f, null)); parent.addChild(objSpin);
return parent; }
/** * Etape 9 : * Methode main() nous permettant d'utiliser cette classe comme une applet * ou une application. * @param args */ public static void main(String[] args) { Frame Frame2 = new MainFrame(new Box3D(), 900, 650); } }
Marsh Posté le 23-05-2008 à 15:43:41
Bonjour à tous
j'ai un mini projet qui consiste à développer une application faisant des figures 3D (cube cylindre pyramide et cône )
Je le fait en Java en créant l'interface graphique de l'application sur une frame et j'ai mis le code qui permet de créer la scéne 3D dans une classe (voir le code ci dessous)
j'ai apapelé la classe de la scène pour le tracé dans un jbouton comme suit
public void jButton4_actionPerformed(ActionEvent e) {
Frame Frame2 = new MainFrame(new Box3D(), 900, 650);
}
En executant ça marche mais mon probleme est que la scéne est affichée dans une autre Frame qu'il crée ; alors que moi je veux que la scène soit affichée dans le Frame (l'interface) de mon application.
Pouvez vous me dire comment faire de telle sorte que la scène soit affichée sur l'interface de mon application au lieu sur une autre fenetre (frame)
Merci d'avance de votre aide
code de la scène :
package pac;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
// Etape 1 :
// Importation des packages Java 2
import java.applet.Applet;
import java.awt.*;
// Etape 2 :
// Importation des packages Java 3D
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
public class Box3D extends Applet {
public Box3D() {
this.setLayout(new BorderLayout());
// Etape 3 :
// Creation du Canvas 3D
Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
this.add(canvas3D, BorderLayout.CENTER);
// Etape 4 :
// Creation d'un objet SimpleUniverse
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
// Etape 5 :
// Positionnement du point d'observation pour avoir une vue correcte de la
// scene 3D
simpleU.getViewingPlatform().setNominalViewingTransform();
// Etape 6 :
// Creation de la scene 3D qui contient tous les objets 3D que l'on veut visualiser
BranchGroup scene = createSceneGraph();
// Etape 7 :
// Compilation de la scene 3D
scene.compile();
// Etape 8:
// Attachement de la scene 3D a l'objet SimpleUniverse
simpleU.addBranchGraph(scene);
}
/**
* Creation de la scene 3D qui contient tous les objets 3D
* @return scene 3D
*/
public BranchGroup createSceneGraph() {
// Creation de l'objet parent qui contiendra tous les autres objets 3D
BranchGroup parent = new BranchGroup();
/************ Partie de code concernant l'animation du cube *************/
/* Elle sera expliquee en details dans les chapitres relatifs aux
transformations geometriques et aux animations */
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Alpha rotationAlpha = new Alpha(-1, 4000);
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objSpin);
BoundingSphere bounds = new BoundingSphere();
rotator.setSchedulingBounds(bounds);
objSpin.addChild(rotator);
/*************** Fin de la partie relative a l'animation ***************/
// Arriere plan en blanc
Background background = new Background(1, 1, 1);
background.setApplicationBounds(new BoundingBox());
parent.addChild(background);
// Construction du parallelepipede
objSpin.addChild(new Box(0.5f, 0.5f, 0.5f, null));
parent.addChild(objSpin);
return parent;
}
/**
* Etape 9 :
* Methode main() nous permettant d'utiliser cette classe comme une applet
* ou une application.
* @param args
*/
public static void main(String[] args) {
Frame Frame2 = new MainFrame(new Box3D(), 900, 650);
}
}