[JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes



  1. #1
    Aenonis

    [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes


    ------

    Bonjour à toutes et à tous!

    J'ai un soucis de JPanel. Je m'explique, j'ai une fenêtre (M), un plateau (P) et différents cercles movables (CM) qui seront au final censés bouger sur P.
    Les CM sont des formes (F) et F est la classe mère des formes qui sont sur P.

    Donc, on a une construction en poupées russes: La fenêtre contient P et P contient des F.

    Le soucis, c'est que P est dessiné avec la méthode surchargée paintComponent(Graphic g) et CM également (CM héritant de F), et la méthode surchargée de CM n'est jamais appelée, malgré que je fasse p.add(cm) et m.setContentPane(p), je ne vois que p et je ne vois pas le cm dans p. Par contre, si je fais m.setContentPane(cm), là, je verrai le cm mais uniquement le cm, je ne verrai pas p. Le soucis vient je pense qu'il y a du dessin (cm se dessine) dans un panel déjà dessiné (p se dessine aussi)...

    En JAVA, cela s'agence comme ça:

    Code:
    package testswing.classes;
    
    import javax.swing.JPanel;
    
    public abstract class F extends JPanel
    {
        public F()
        {
            super(null);
        }
    }
    Code:
    package testswing.classes;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    
    public final class CM extends F
    {
        public CM()
        {
        }
        
        @Override
        protected final void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            System.out.println("paintComponent CM");
            Graphics2D g2=(Graphics2D)g;        
            setBounds(250, 0, 100, 100);
            g2.setColor(Color.GREEN);
            g2.fillRect(0, 0, getWidth(), getHeight());
            g2.setColor(Color.RED);
            g2.fillOval(0, 0, 100, 100);
        }    
    }
    Code:
    package testswing.classes;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.util.ArrayList;
    import java.util.List;
    import javax.swing.JPanel;
    
    public final class P extends JPanel
    {
        private final List<F> fs;
        
        public P()
        {
            super(null);
            fs=new ArrayList<F>();
        }
        
        @Override
        protected final void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            Graphics2D g2=(Graphics2D)g;        
            setBounds(0, 0, 600, 600);
            g2.setColor(Color.GREEN);
            g2.fillRect(0, 0, getWidth(), getHeight());
        }
        
        public final void add(F f)
        {
            fs.add(f);
            add((JPanel)f);
        }
    }
    Code:
    package testswing.classes;
    
    import javax.swing.JFrame;
    
    public final class M extends JFrame
    {
        private final P p;
        
        public M(P p)
        {
            this.p=p;
            setContentPane(p);
            setTitle("Test");
            setSize(650, 650);
            setResizable(false);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
    }
    Code:
    package testswing;
    
    import testswing.classes.CM;
    import testswing.classes.M;
    import testswing.classes.P;
    
    public class Main
    {
        public static void main(String[] args)
        {
            P p=new P();
            
            CM cm=new CM();
            p.add(cm);
            
            M m=new M(p);
        }
    }
    Avec le Main, je vois donc p (un carré vert de 600 pixels de coté) mais je ne vois pas cm (qui est une boule rouge).

    Si vous pouviez m'aider à comprendre pourquoi ça ne fonctionne pas, je suis à votre écoute.

    J'ai déjà essayé de foutre des cm.repaint() partout mais jamais la méthode surchargée de CM n'est appelée, c'est à en devenir fou.

    Merci d'avance,

    Aenonis

    -----
    Dernière modification par Aenonis ; 20/07/2013 à 23h22.
    Aenonis

  2. #2
    Aenonis

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    je demande un petit up
    Aenonis

  3. #3
    Aenonis

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    Je demande un petit up
    Aenonis

  4. #4
    Aenonis

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    Je me permets de relancer pour la troisième fois le sujet...
    Aenonis

  5. A voir en vidéo sur Futura
  6. #5
    Aenonis

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    Y'a quelqu'un sur le forum???
    Aenonis

  7. #6
    JPL
    Responsable des forums

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    Manifestement il semble que personne n'ait d'idée sur ton sujet. Je ne crois donc pas utile de le relancer à nouveau. Cela arrive parfois. Désolé.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  8. #7
    Aenonis

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    Merci cher Modérateur

    Le projet est donc aborté pour ma part, j'essayerai de trouver une solution plu tard, je suis sur d'autres projets actuellement.

    À plus tard,

    Aenonis
    Aenonis

  9. #8
    HGP

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    Bonjour,

    Pour emboiter les JPanel :

    Code:
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import javax.swing.JPanel;
    
    public final class P extends JPanel
    {
    
        @Override
        protected final void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            Graphics2D g2=(Graphics2D)g;        
            setBounds(0, 0, 600, 600);
            g2.setColor(Color.GREEN);
            g2.fillRect(0, 0, getWidth(), getHeight());
        }
        
    
    }
    
    
    
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import javax.swing.JPanel;
    
    public final class CM extends JPanel
    {
        public CM()
        {
        }
        
        @Override
        protected final void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            System.out.println("paintComponent CM");
            Graphics2D g2=(Graphics2D)g;        
            setBounds(250, 0, 100, 100);
            g2.setColor(Color.GREEN);
            g2.fillRect(0, 0, getWidth(), getHeight());
            g2.setColor(Color.RED);
            g2.fillOval(0, 0, 100, 100);
        }    
    }
    
    
    
    import javax.swing.JFrame;
    
    public class Main
    {
        public static void main(String[] args)
        {
        	P p = new P();
        	CM cm = new CM();
        	p.add(cm);
           JFrame jf = new JFrame();
           jf.setContentPane(p);
           jf.setTitle("Test");
           jf.setSize(650, 650);
           jf.setResizable(false);
           jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           jf.setVisible(true);
    
        }
    }
    tout simplement...je ne comprends pas trop tout le code qui a été mis

    si c'est toujours d'actualite et si ca peut aider

    cdt

  10. #9
    Aenonis

    Re : [JAVA swing] Problème avec des JPanel mis à la façon des Poupées Russes

    Bonjour HGP,

    Merci de m'avoir répondu .

    J'ai repris ton code, en effet ça fonctionne, c'est dingue.

    Je ne vois pas où est mon erreur...

    Cordialement,

    Aenonis
    Aenonis

Discussions similaires

  1. redimentionner un JPanel JAVA
    Par invitec7fd8fb0 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 07/09/2011, 22h45
  2. Big Bang - Théorie des poupées russes
    Par invitedfd34d6a dans le forum Cosmologie et astroparticules
    Réponses: 1
    Dernier message: 18/10/2006, 08h54
  3. gros problème avec des logiciels java
    Par inviteca0aee8d dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 08/07/2006, 19h54
  4. Java Swing: setBounds
    Par martini_bird dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 15/02/2006, 20h41
  5. Regles et poupées russes
    Par invitea03fa308 dans le forum [ARCHIVE] Philosophie
    Réponses: 0
    Dernier message: 25/10/2003, 20h50