Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème d'affichage d'un canvas3D dans une JFrame [ Archives / Java2D et java3D ] (frac10)

vendredi 10 mars 2006 à 16:08:08 | Problème d'affichage d'un canvas3D dans une JFrame

frac10

Bonjour à tous d'abord, débutant en Java, je suis en train d'essayer d'afficher un canvas3D dans un JDesktopPane de ma JFrame. Mon but serait d'arriver à changer la couleur du cube 3D (contenu dans le canvas3D) à partir de 3 JSlider (Rouge, Vert et Bleu). Or, quand je lance l'application, je vois bien mes 3 sliders (plus le JEditorPane que j'ai ajouté uniquement pour voir si le changement de couleur fonctionnait...) mais pas ma scène en 3D (pas d'erreur à la compilation)... :-( Bref, si quelqu'un avait une petite idée de mon erreur (qui doit être grossière je pense, vu mon inexpérience en Java), je l'en remercie énormément d'avance !!! Ci-après le code : // Etape 1 : // Importation des packages Java 2 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JFrame; import java.awt.Panel; import javax.swing.JSlider; import javax.swing.JSplitPane; import javax.swing.JEditorPane; import javax.swing.JInternalFrame; import javax.swing.JCheckBox; import javax.swing.JToolBar; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JLabel; // Etape 2 : // Importation des packages Java 3D import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.loaders.objectfile.*; import com.sun.j3d.loaders.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.behaviors.mouse.*; import com.sun.j3d.utils.geometry.Box; import javax.media.j3d.*; import javax.media.j3d.Canvas3D; import javax.vecmath.*; public class Bof extends JFrame { private JDesktopPane jDesktopPane = null; private JSlider jSlider = null; private JSlider jSlider1 = null; private JSlider jSlider2 = null; private JLabel jLabel = null; private JLabel jLabel1 = null; private JLabel jLabel2 = null; private JEditorPane jEditorPane = null; private Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); /** * This is the default constructor */ public Bof() { super("ONK ONK ONK !!!"); initialize(); setDefaultCloseOperation(EXIT_ON_CLOSE); jSlider.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { sliderMouseDraggedCB(); } }); jSlider1.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { sliderMouseDraggedCB(); } }); jSlider2.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { sliderMouseDraggedCB(); } }); // 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); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } /** * 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(); // Creation d'une lumiere ambiante de couleur blanche BoundingSphere bounds = new BoundingSphere(new Point3d(), 100); Light ambientLight = new AmbientLight(new Color3f(Color.white)); ambientLight.setInfluencingBounds(bounds); parent.addChild(ambientLight); // Creation d'une lumiere directionnelle de couleur blanche Light directionalLight = new DirectionalLight( new Color3f(Color.white), new Vector3f(1, -1, -1)); directionalLight.setInfluencingBounds(bounds); parent.addChild(directionalLight); // Creation du groupe de transformation sur lequel vont s'appliquer les // comportements TransformGroup mouseTransform = new TransformGroup(); // Le groupe de transformation sera modifie par le comportement de la // souris mouseTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); mouseTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); // Creation comportement rotation a la souris MouseRotate rotate = new MouseRotate(mouseTransform); rotate.setSchedulingBounds(new BoundingSphere()); parent.addChild(rotate); // Creation comportement deplacement a la souris MouseTranslate translate = new MouseTranslate(mouseTransform); translate.setSchedulingBounds(new BoundingSphere()); parent.addChild(translate); // Creation comportement zoom a la souris MouseZoom zoom = new MouseZoom(mouseTransform); zoom.setSchedulingBounds(new BoundingSphere()); parent.addChild(zoom); Background background = new Background(new Color3f(Color.white)); background.setApplicationBounds(new BoundingBox()); parent.addChild(background); // Chargement de l'objet Wavefront et ajout au graphe de la scene mouseTransform.addChild(new Box(0.5f, 0.5f, 0.2f, null)); parent.addChild(mouseTransform); return parent; } private void sliderMouseDraggedCB() { float Rcolor, Vcolor, Bcolor; Rcolor = jSlider.getValue() / 100f; Vcolor = jSlider1.getValue() / 100f; Bcolor = jSlider2.getValue() / 100f; jEditorPane.setBackground(new java.awt.Color(Rcolor,Vcolor,Bcolor)); } /** * This method initializes this * * @return void */ private void initialize() { this.setSize(600, 400); this.setContentPane(getJDesktopPane()); this.setTitle("JFrame"); } /** * This method initializes jDesktopPane * * @return javax.swing.JDesktopPane */ private JDesktopPane getJDesktopPane() { if (jDesktopPane == null) { jLabel2 = new JLabel(); jLabel2.setBounds(new java.awt.Rectangle(152,333,36,16)); jLabel2.setText("Bleu"); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1 = new JLabel(); jLabel1.setText("Vert"); jLabel1.setSize(new java.awt.Dimension(36,16)); jLabel1.setLocation(new java.awt.Point(152,307)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel = new JLabel(); jLabel.setBounds(new java.awt.Rectangle(151,279,38,16)); jLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel.setText("Rouge"); jDesktopPane = new JDesktopPane(); jDesktopPane.add(getJSlider(), null); jDesktopPane.add(getJSlider1(), null); jDesktopPane.add(getJSlider2(), null); jDesktopPane.add(jLabel, null); jDesktopPane.add(jLabel1, null); jDesktopPane.add(jLabel2, null); jDesktopPane.add(getJEditorPane(), null); jDesktopPane.add(getCanvas3D(), null); } return jDesktopPane; } /** * This method initializes jSlider * * @return javax.swing.JSlider */ private JSlider getJSlider() { if (jSlider == null) { jSlider = new JSlider(); jSlider.setBounds(new java.awt.Rectangle(189,279,200,16)); } return jSlider; } /** * This method initializes jSlider1 * * @return javax.swing.JSlider */ private JSlider getJSlider1() { if (jSlider1 == null) { jSlider1 = new JSlider(); jSlider1.setBounds(new java.awt.Rectangle(189,306,200,16)); } return jSlider1; } /** * This method initializes jSlider2 * * @return javax.swing.JSlider */ private JSlider getJSlider2() { if (jSlider2 == null) { jSlider2 = new JSlider(); jSlider2.setSize(new java.awt.Dimension(200,16)); jSlider2.setLocation(new java.awt.Point(189,333)); } return jSlider2; } /** * This method initializes jEditorPane * * @return javax.swing.JEditorPane */ private JEditorPane getJEditorPane() { if (jEditorPane == null) { jEditorPane = new JEditorPane(); jEditorPane.setBackground(new java.awt.Color(127,127,127)); jEditorPane.setBounds(new java.awt.Rectangle(30,281,106,69)); } return jEditorPane; } private Canvas3D getCanvas3D() { if (canvas3D == null) { canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); canvas3D.setSize(new java.awt.Dimension(000,100)); canvas3D.setLocation(new java.awt.Point(10,10)); } return canvas3D; } public static void main(String [] args) { Bof tv = new Bof(); tv.show(); } }

jeudi 16 mars 2006 à 11:45:01 | Re : Problème d'affichage d'un canvas3D dans une JFrame

dmaillet

Avec du retard, mais mieux vaut tard que jamais!
un canvas3d n'a pas de dimension par defaut, donc il suffit de lui donnner une dimension et c'est parti...
canvas3d.setSize(200,200); par exemple, ou d'utiliser un layout s'en chargeant...

dams

jeudi 16 mars 2006 à 15:31:53 | Re : Problème d'affichage d'un canvas3D dans une JFrame

frac10

Merci beaucoup de m'avoir répondu, mais en fait je l'ai dimensionné le canvas3d (tout en bas) : "canvas3d.setSize(new java.awt.Dimension(100,100)" (ne pas faire gaffe au (000,100) du post, je l'ai modifié et cela ne change rien)... Je ne sais vraiment pas comment faire, parce que rien ne s'affiche : j'ai essayé avec un layout, çà marche, mais je voudrai le faire avec JDesktopPane pour pouvoir "mettre en page" comme je veux. Si il y avait une autre idée... Mais merci quand même !

jeudi 16 mars 2006 à 15:39:07 | Re : Problème d'affichage d'un canvas3D dans une JFrame

dmaillet

Non, ton erreur est simple, tu n'appelles pas la methode getCanvas3D() pour creer ton canvas si tu regardes bien, dans tes declarations en haut tu fais
    private Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
alors forcement, tu ne passes pas par le setSize... change ca, et ca marche (j'avais essaye avant de te repondre evidemment...)

dams

jeudi 16 mars 2006 à 18:06:33 | Re : Problème d'affichage d'un canvas3D dans une JFrame

frac10

Merci beaucoup pour ta réponsse si rapide !

Excuse-moi pour mon dernier message, mais je pensais juste que tu n'avais pas vu que j'avais appelé le setSize, désolé...

Et désolé également d'être une véritable buse, mais il faut que j'appelle la méthode getCanvas3D() à quel endroit ?

Merci d'avance !!!

vendredi 17 mars 2006 à 08:37:36 | Re : Problème d'affichage d'un canvas3D dans une JFrame

dmaillet

Réponse acceptée !
Tu vires
    private Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
et tu mets
    private Canvas3D canvas3D;
dans tes declarations
et dans ton constructeur Bof ou dans le initialize() tu appelles getCanvas();

dams

vendredi 17 mars 2006 à 09:38:15 | Re : Problème d'affichage d'un canvas3D dans une JFrame

frac10

C'est bon, çà marche nickel comme çà !!!
Merci beaucoup pour ta patience et pour m'avoir aidé !!!




Cette discussion est classé dans : java, import, javax, jslider, jdesktoppane


Répondre à ce message

Sujets en rapport avec ce message

filtre dans les JFileChoosen [ par jc_romeo ] Bonjourje voudrais faire un filtre dans les JFileChoosen et on m'a dit que je pouvais utiliser ExampleFileFilter()néanmoins quand je le mets il me dit Stéganographie sur un fichier wav [ par aurelie_devplus ] Je dois réaliser une application qui encrypte un fichier .txt dans un fichier .wav. Je dois pouvoir placer le texte dans le fichier wav sans modifier Problème rafraichissement image avec Swing [ par ejouvin ] Bonjour.Je suis en train de faire une petite application qui contient une arborescence à gauche et une fenêtre de détail sur la droite.Dans le code su Probème dans mon code pour port parallèle [ par mageti ] Bonjour à tous,Je poursuis péniblement ma quête à propos de "comment puis-je commander mon port parallèle ?"J'ai bidouillé un petit code à partir des JavaMail et J2EE [ par nexol ] Salut,Je dispose du J2EE 1.4 qui comprend par défaut le package JavaMail. J'ai créé un fichier pour tester mais le compilateur ne reconnait pas tous l pb Java2D avec Java3D [ par WhiteBeast ] Bonjour à tous!J'ai réussi a résoudre une partie de mon problème lié à la manipulation de DXF avec java grâce à un Loader trouver sur le net mais main Pb avec horloge en java [ par GUIF44 ] Bonjour, je travail actuellement sur un programme nécessitant une horloge (affichage heure type: 11:48:34). J'arrive bien à récuperer les heures, minu Jtable et erreur ! [ par jimmy69 ] Bonjour a tous,J'ai un p'tit souci avec mon application qui ne fait que d'ajouter des composant sur un JFrame  !lorsque j'ajoute un jtable et que je l Pb de centrage d'un JLabel vertical dans une JTable [ par MehdiD94 ] Bonjour !!Apres de nombreuses heures vaines, j'appelle a l'aide.J'ai une JTable dont la premiere ligne apres le header contient des JVerticalLabel (cl Probleme avec JButton et ImageIcon [ par ralebole ] J'ai un probleme avec JButton et ImageIcon quand je compile et que j'execute avec "Jcreator Le" tous fonctionne normalement j'ai ma fenetre avec mon b


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.