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

AWT/Swing Java Discussion :

Graphics paint compoment


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut Graphics paint compoment
    Bonjour

    voila j'ai une grille 3*3 de JLabel dans lesquelles je veux dessiner

    j'aicrée une classe pour obtenir la position du JLabel dans la grille

    et je les crée comme ça et je veux dessiner un rectangle
    mais j'ai un probleme de NullPointerException apres si j'appel g(mes graphics)

    faut t'il que j'utilise dans ma classe un héritage de JComponent et que je fasse une méthode paintComponent ??

    d'avance merci

    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
    for (int i = 0; i < cases.length; i++) {
    	    for (int j = 0; j < cases[i].length; j++) {
    		cases[i][j] = new Zone(i,j);
                    cases[i][j].setPreferredSize(new Dimension(50,50));
                 cases[i][j].setBorder(BorderFactory.createLineBorder(Color.YELLOW));
                    panCenter.add(cases[i][j]);
                    Graphics g = cases[i][j].getGraphics();
                    //g.setColor(Color.BLACK);
                    //g.fillRect(0,0,15,15);
     
                    cases[i][j].repaint();
     
    cases[i][j].addMouseListener(actionSouris);
    	    }
    	}

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par LeXo
    ...
    mais j'ai un probleme de NullPointerException apres si j'appel g(mes graphics)
    ...
    Tes label ne sont sans doute pas visibles. getGraphics te retourne null (cf javadoc).


    Citation Envoyé par LeXo
    faut t'il que j'utilise dans ma classe un héritage de JComponent et que je fasse une méthode paintComponent ??
    Il faut que tu surcharges paintComponent de la classe dont les instances sont dans le tableau (la classe Zone a priori).

  3. #3
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    alors j'ai surchagé paintComponent ma classe Zone

    mais je sais pas quoi mettre vu que selon le joueur
    soit j'affiche un carré ou un rond

    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
    /**
     *
     * @author KarKam Dvpt
     * @version 1.0
     */
     
    package morpion;
     
    import javax.swing.JLabel;
    import javax.swing.JComponent;
     
    import java.awt.Graphics;
    import java.awt.Image;
     
    public class Zone extends JLabel {
     
        private int a;
        private int b;
        private Image img;
     
        public Zone(int i,int j) {
            super();
            this.a=i;
            this.b=j;
        }
     
        public int getA(){
            return this.a;
        }
     
        public int getB(){
            return this.b;
        }
        public void paintComponent(Graphics g){
            g.drawImage(img,0,0,null);
     
        }
    }
    et ou je faire mon dessin
    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
     //Afficher Graphiquement le symbole du joueur sur la case cliqué
        public void jouerGraphic(int joueur,int lig,int col){
            switch(joueur){
                case 1:
                   // cases[lig][col].setIcon(CROIX);
                    cases[lig][col].setBackground(Color.WHITE);
                    Graphics g = cases[lig][col].getGraphics();
                    g.setColor(Color.CYAN);
                    g.fillRect(2,2,50,50);
     
                    cases[lig][col].repaint();
                    break;
                case 2:
                   // cases[lig][col].setIcon(ROND);
                    break;
     
            }
        }
    d'avance merci

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Il faut que tout le dessin se fasse dans paintComponent.

    Si tu as besoin de differencier le dessin, ajoute un attribut dans la classe Zone pour determiner si la case est vide, au joueur 1 ou au joueur 2.
    Utilise ensuite cet attribut dans paintComponent.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Graphics g = cases[lig][col].getGraphics();
    g.setColor(Color.CYAN);
    g.fillRect(2,2,50,50);
     
    cases[lig][col].repaint();
    Les 3 lignes de code avant le repaint sont sans interet. A partir du moment ou tu appelles repaint(), tout ce que tu as tracé va être effacé.

  5. #5
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    ah merci pour les infos

    imppec j'ai pigé, j'ai mis le code pour mon programme

    je vais regarder la différence entre les fill draw et les graphics2D

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

Discussions similaires

  1. probleme avec paint(Graphics g)
    Par narcis60floyjo dans le forum Graphisme
    Réponses: 5
    Dernier message: 24/12/2009, 22h35
  2. Réponses: 3
    Dernier message: 12/04/2008, 04h14
  3. [graphics] Paint en java
    Par soad dans le forum 2D
    Réponses: 2
    Dernier message: 14/04/2006, 14h47
  4. [Graphic] Dessiner des hachures
    Par sylverspoon dans le forum 2D
    Réponses: 7
    Dernier message: 22/03/2006, 21h46
  5. [Java2D]MouseEvent sur un paint Graphics g
    Par tahiti bob dans le forum 2D
    Réponses: 9
    Dernier message: 09/10/2004, 22h15

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