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 :

Insérer un tableau d'objet dans un Jpanel


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Points : 64
    Points
    64
    Par défaut Insérer un tableau d'objet dans un Jpanel
    bonjour à tous, je vous contacte pour un petit problème...
    Voilà j'aimerais insérer un tableau d'objet dans un Jpanel; chaque objet possède sa problème méthode d'affichage.

    Mon code est le suivant: classe Grille

    public Grille(Decors avion)
    {
    longueur = avion.getLongueur();
    hauteur = avion.getLargeur();
    tableauDeBase = avion.quadrillage;
    }

    public void paint(Graphics g)
    {
    Graphics2D comp2D= (Graphics2D)g;
    for(int i=0 ; i < hauteur ; i++){
    for(int j=0 ; j < longueur ; j++){

    tableauDeBase[i][j].affichageEcran(comp2D,i,j);

    }
    }
    }

    public void update(Graphics g)
    {
    paint( g);
    }

    Classe ApercuGraphique:
    zoneGauche.add(simu.getLaGrille());
    zoneGauche.repaint();
    // TODO Auto-generated Event stub actionPerformed()
    }
    });

    }
    return nouvelleSimulation;
    }
    /**
    * This method initializes jMenuItem
    *
    * @return javax.swing.JMenuItem
    */

    public void paintComponent(Graphics g){
    simu.getLaGrille().paint(g);
    }

    je n'avais aucun problème pour le fair apparaître dans une JFrame....
    D'avance merci!!
    Bonne journée

  2. #2
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    tu pourrais mettre des balises code et ce que fait la procedure affichageEcran ?

    merci
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 230
    Points : 250
    Points
    250
    Par défaut
    puis en meme temps on ne vas pas te donner le code tout fais alors OU exactement ca coince ? quel est le probleme exactement ?

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Points : 64
    Points
    64
    Par défaut
    Voici mes méthodes:

    Méthode paint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void paint(Graphics g){
     super.paint(g);
     if ((zoneGauche==null)){
       try {
        simu.getLaGrille().affichageDecorDeFond(zoneGauche.getGraphics());
        simu.getLaGrille().affichageAvion(zoneGauche.getGraphics());}
     
       catch ( NullPointerException e ){}
       }
     }
    Méthode d'affichage:

    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
     
     public void affichageDecorDeFond(Graphics g){
     
      Graphics2D comp2D= (Graphics2D)g;
      //comp2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
      for(int i=0 ; i < this.hauteurDecor ; i++){
       for(int j=0 ; j < this.longueurDecor ; j++){
     
        this.tableauDeBase[i][j].affichageEcran(comp2D,i,j);
     
       }
      }
     }
     public void affichageAvion(Graphics g){
     
      Graphics2D comp2D= (Graphics2D)g;
      //comp2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
      for(int i=0 ; i < this.hauteurCarlingue ; i++){
       for(int j=0 ; j < this.longueurCarlingue ; j++){
     
        this.carlingueAvion[i][j].affichageEcran(comp2D,i,j);
     
       }
      }
     }
    Méthode d'affichage Ecran:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void affichageEcran(Graphics2D g,int i,int j){
     g.setColor(Color.RED);
     g.fill3DRect(j*tailleCarre,i*tailleCarre,tailleCarre,tailleCarre,true);
     
    }
    Le problème est le suivant: zoneGauche est le JPanel dans lequel doit s'afficher la simulation; lorsque le programme s'exécute, rien n'apparait!!
    Pourtant en toile de fond la simulation a bien lieu... D'où viens l'erreur alors?

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Points : 64
    Points
    64
    Par défaut
    Bien, j'ai modifié l'affichage du JPanel comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void paintComponent(Graphics g){
       super.paint(g);
         simu.getLaGrille().affichageDecorDeFond(zoneGauche.getGraphics());
         simu.getLaGrille().affichageAvion(zoneGauche.getGraphics());}
    et j'ai rajouté la méthode update:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void update(Graphics g){
       this.paintComponent(g);
      }
    Résultat

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Points : 64
    Points
    64
    Par défaut
    la méthode qui gère le nombre de cycle éta,t comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void simuCompleteGraphique (int nbCycle){
     
       if (nbCycle==0){
        System.out.println("Pas de simulation");
        repaint();
       }
       else{
        for (int i=1; i<(nbCycle+1); i++){
         simu.getSimu().uncycle();
             this.repaint();
        }
       }
      }
    Le résultat est le suivant: seul le résultat de la simulation est apparu, et pas toutes les différents tableaux qui auraient du apparaître... Je dois dire que je suis perplexe....

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Points : 64
    Points
    64
    Par défaut
    Décidément, rine ne marche....

    ma méthode update est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void update(Graphics g){
       paintComponent(g);
      }
    Lorsque j'utilise le debugger en placant un breakpoint au niveau de this.repaint() et un autre au niveau de la méthode update, je me suis aperçu que la méthode repaint ne s'exécutait que lors du dernier cycle!!

    D'où ma toujours grande interrogation: d'où cela peut-il venir??

Discussions similaires

  1. delete sur un tableau d'objets dans destructeur
    Par Mihnea24 dans le forum Débuter
    Réponses: 6
    Dernier message: 05/12/2008, 22h42
  2. Insérer un tableau de données dans un formulaire
    Par flukie dans le forum Access
    Réponses: 8
    Dernier message: 07/06/2006, 11h45
  3. Disposition d'un tableau de boutons dans un JPanel
    Par Arnaud F. dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/04/2006, 18h09
  4. Déplacer des objets dans un JPanel
    Par hammag dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/03/2006, 11h13
  5. [JPanel] parcours d'objets dans un JPanel
    Par fleur1234 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 17/01/2005, 13h24

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