IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

dessiner sur un JPanel


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Par défaut dessiner sur un JPanel
    Bonjour,
    Enfin j'essaye de dessiner un petit rectangle sur un JPanel, Mais ça marche pas, pourtant mon code ME semble logique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    package list;
     
    import java.awt.Color;
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    public class Dessin extends JPanel {
     
    	public JPanel panel = null;
     
        public Dessin(){
    		super();
    		initialize();
    	}
     
    	private void initialize(){
    		this.setSize(600, 600);
    		this.setLayout(null);
    		this.panel = new JPanel();
    		this.panel.setBackground(Color.black);
    		this.panel.setSize(100, 100);
    		this.panel.setLocation(10, 10);
    		this.add(this.panel);
    	}
     
    	public void paintComponent(Graphics gc)
    	{
    		 gc.setColor(Color.green);
    		 gc.fillRect(10, 10, 30, 30);
    	}
    }
    Voyez vous pourquoi ça marche pas?? Merci à l'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Bonjour,

    Il y a un gros problème dans ton code.

    Ta classe dessin étend JPanel et tu lui ajoute quand même un JPanel "panel" sur lequel tu règle la taille, la couleur,.... Et surtout tu l'ajoute à ta classe Dessin. Il prend donc logiquement toute la place.

    Le problème est que le paintComponent que tu surcharge et grace auquel tu dessine ton rectangle se dessine sur le panel Dessin et pas sur ton JPanel "panel".
    Je ne sais pas si j'ai été très clair.

    En gros, tu dessines ton rectangle sur Dessin mais après tu ajoutes par dessus un JPanel qui prend toute la place. Donc ton dessin est caché.

    Le but du "extends JPanel" est justement de travailler directement avec la classe courante sans créer un nouveau JPanel.


    Si on reprend ton code, ça donnerait ça (à quelque repaint près...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    package list;
     
    import java.awt.Color;
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    public class Dessin extends JPanel {
     
        public Dessin(){
    		super();
    		initialize();
    	}
     
    	private void initialize(){
    		this.setSize(600, 600);
    		this.setLayout(null);
                    this.setBackground(Color.black);
    		this.setLocation(10, 10);
                    repaint();
    	}
     
    	public void paintComponent(Graphics gc)
    	{
    		 gc.setColor(Color.green);
    		 gc.fillRect(10, 10, 30, 30);
    	}
    }
    Cdlt

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Par défaut
    Oui je me suis rendu compte de cette erreure aprés , le probléme c'est que je voulais ajouter une image à mon fameux panel avant de dessiner le rectangle dessus. En final, je voulais avoir mon panel avec l'image dedans et un rectangle par dessus l'image.et je veux reccuperer ce panel a partir d'une autre classe..Je ne sais pas si t'as une idée?
    Voici mon nouveau code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    package list;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Image;
     
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    import com.sagem.morpho.criminalcaseedition.data.casse.CasePortrait;
     
    public class Dessin extends JPanel {
     
    	/** Icon1. */
        private ImageIcon icon1 = null;
     
        /** Icon2. */
        private ImageIcon icon2 = null;
     
        /** Label. */
        private JLabel label = null;
     
        public Dessin(){
    		super();
    		initialize();
    	}
    	private void initialize(){
    		this.setSize(600, 600);
    		this.setLayout(null);
            this.setBackground(Color.white);
    		this.icon1 = getIcon("C:\\jeux de test\\1.jpg");
            this.icon2 = new ImageIcon(this.icon1.getImage().getScaledInstance(100, 100, Image.SCALE_DEFAULT));
            this.label = new JLabel(this.icon2);
            this.label.setBackground(Color.yellow);
            this.label.setBounds(50, 50, 80, 80);
            this.add(label);
     
    	}
    	public void paintComponent(Graphics gc)
    	{
    		 gc.setColor(Color.green);
    		 gc.fillRect(30, 30, 30, 30);
    	}
     
        private ImageIcon getIcon(final String name) {
            return new ImageIcon(name);
        }
    }
    Merci...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Rebonjour,

    Le plus propre c'est de faire une classe RectanglePerso qui étend JPanel et dans laquelle tu dessine ton rectangle en surchargant le méthode PaintComponent. Tu instancie ensuite cette classe dans ta classe Dessin (dans laquelle tu met ton image). Tu ajouteras donc ton rectangle par dessus l'image.

    Cdlt

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Par défaut
    Merci piou1234,
    C'est ce que j'ai fait et ça marche merci. Merci mille fois.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Effacer mon dessin sur mon JPanel
    Par maxa88 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 01/06/2015, 14h37
  2. Dessin sur JPanel et refresh
    Par Djakisback dans le forum Composants
    Réponses: 1
    Dernier message: 22/12/2008, 20h10
  3. Réponses: 4
    Dernier message: 21/07/2008, 22h32
  4. Réponses: 2
    Dernier message: 03/03/2007, 19h16
  5. Réponses: 4
    Dernier message: 27/02/2006, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo