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 :

Pb de dessin avec GridLayout


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Pb de dessin avec GridLayout
    Bonjour,
    Voila j'ai un petit souci pour dessiner dans un Jpanel d'un GridLayout.
    En fait, j'ai un gridLayout qui contient des JPanel(donc dans chaque case du gridLayout j'ai un petit carre bleu).
    J'aimerais lors d'un appel a une fonction dessiner un rond jaune dans un des JPanel (en precisant justement son indice).
    J'ai essayer les repaint revalidate.... ça marche pas.
    Je me demandais s'il était possible de supprimer le petit panel concerné en faisant : un grille.remove(indice)
    Puis de le rajouter a la meme position mais cette fois ci redessiner (avec le rond).
    Peut on acceder a un des composant du gridLayout et peut-on le rafraichir, le redessiner sans à avoir a tout redessiner ou le supprimer (si ça marche..)????


    Merci d'avance

  2. #2
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Tu pourrais, par exemple, te faire un sous-classe de JPanel et redefinir paintComponent().

    genre :
    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
    public class MonPetitPanel extends JPanel {
       private String style = "carreBleu";
     
       public void setStyle(String style) {
         this.style = style;
      }
     
      public void paintComponent(Graphics g) {
         super.paintComponent(g);
     
         if("carreBleu".equals(style))
            g.setColor(Color.BLUE);
            g.drawRect(0,0, getWidth(), getHeight());
         else {
            g.setColor(Color.YELLOW);
            g.drawOval(0,0, getWidth(), getHeight());
         }
      }
    }
    Lorsque tu veux avoir un rond jaune tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monPanel.setStyle("rondJaune");
    monPanel.repaint();

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bah en fait j'ai deja ça :
    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
    public PetitPanel extends Panel{
                 private int symbole = 2;
                 private int indice;
                 private Partie partie;
     
    public PetitPanel(int i, Partie p){
            indice = i;
            partie = p;
     
           //ici je redefinie la addMouseListener
          //en lui mettant la fonction mouseclicked donc sur chaque petit carre :
         //lance la fonction jeu de la classe Partie qui elle appelle paint sur 
         //cette zone
     
    public void paintComponent(Graphic g){
          super.paintComponent(g);
     
          if(symbole == partie.RONDJAUNE)
              //dessin un rond jaune
             //RONDJAUNE attribut(int) de la class Partie vaut 0
          if(symbole == partie.RONDROUGE)
             //dessin un rond rouge
            //attribut(int) de la class Partie vaut 1
    }
    Puis dans la class Partie ou je fait tous mes traitements, pour le clic sa marche,ça dessine donc bien sur la zone mais si je veux moi meme lui dire dessine dans telle zone en lui disant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PetitPanel p = new PetitPanel(4, this);
    p.symbole = 1;
    p.repaint()
    ça marche pas car on dirait en fait qu'il ne reference pas le petit panel de ma grille.
    :

  4. #4
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par mystik11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PetitPanel p = new PetitPanel(4, this);
    p.symbole = 1;
    p.repaint()
    ça marche pas car on dirait en fait qu'il ne reference pas le petit panel de ma grille.
    :
    Ben tu crée un nouveau panel en dehors de ta grille, normal qu'il s'affiche pas. Il faut que tu récupères un des panel de la grille. Tu as bien un tableau quelque part contenant des références sur tes objets ?

Discussions similaires

  1. Dessiner avec wxWidgets
    Par SuperPat dans le forum wxWidgets
    Réponses: 5
    Dernier message: 24/02/2009, 00h06
  2. Le dessin avec VC dans une fenetre windows
    Par ccensam dans le forum MFC
    Réponses: 3
    Dernier message: 03/11/2005, 23h40
  3. Création dessin avec données saisies
    Par javajay dans le forum 2D
    Réponses: 5
    Dernier message: 26/10/2005, 02h55
  4. Réponses: 1
    Dernier message: 26/02/2005, 12h55

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