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 :

Mise à jour d'un JPanel


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Points : 37
    Points
    37
    Par défaut Mise à jour d'un JPanel
    Bonsoir à tous !

    Je sais que des soucis de ce genre ont été mainte fois postés, mais je fouine sur internet depuis pas mal d'heure maintenant et je commence à devenir fou ...

    Au lancement de l'app, mon JPanel est vide, il n'y a que ses contours. Mais après avoir cliqué sur le bouton "Démarrer" mon algo se lance (voyageur de commerce par algo génétique). Dans mon JPanel devrait alors s'afficher le graphe de mon parcours le plus court mais mon JPanel reste vierge !

    J'appelle dans ma classe main le setter modifié pour donner un nouveau tableau à Tab_Trajet (instancié au début à null). Et ensuite le repaint() qui je pensais mettrais à jour mon JPanel suivant le nouveau Tab_Trajet masi quedal !

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    package view;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import javax.swing.BorderFactory;
    import javax.swing.JPanel;
     
    public class panelGraphe extends JPanel
    {
        private int[] Tab_Trajet = null; // = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14} 
        private int[][] Tab_Coord;
     
        public panelGraphe(JPanel panelGraphe)
        {               
            //Panel du Graphe
            this.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            this.setPreferredSize(new Dimension(900, 500));
            this.setMaximumSize(new Dimension(900, 500));
            this.setMinimumSize(new Dimension(900, 500));
        }       
     
        @Override
        public void paint(Graphics g)
        {           
            if(Tab_Trajet != null)
            {
                super.paint(g);
                Tab_Coord = new int[Tab_Trajet.length][2];
                int i = 1, j = 1;
                int x = 50; int y = 50;
                int nb_bloc = (Tab_Trajet.length-1) / 5;
                int size_y = 400 / nb_bloc;
                String point;
     
                while(j <= Tab_Trajet.length)
                {
                    point = Integer.toString(j);
                    g.drawString(point, x, y-8);
                    g.fillRect(x, y, 6, 6);
                    Tab_Coord[j-1][0] = x;
                    Tab_Coord[j-1][1] = y;
                    x += 200;
     
                    if(i == 5)
                    {
                        y += size_y;
                        x = 50;
                        i = 0;
                    }
                    i++; j++;
                }
     
                j = 1;
                int X1, Y1, X2, Y2;
                while(j < Tab_Trajet.length)
                {
                    X1 = Tab_Coord[j-1][0]; Y1 = Tab_Coord[j-1][1];
                    X2 = Tab_Coord[j][0]; Y2 = Tab_Coord[j][1];
                    g.drawLine(X1, Y1, X2, Y2);
                    j++;
                }
     
                X2 = Tab_Coord[Tab_Trajet.length-1][0];
                Y2 = Tab_Coord[Tab_Trajet.length-1][1];  
                g.setColor(Color.RED);
     
                g.drawLine(50, 50, X2, Y2);
            }
        }
     
        public void setTab_Trajet(int[] Tab_Trajet)
        {
            this.Tab_Trajet = Tab_Trajet;
            this.removeAll();
            this.validate();
            this.repaint();
        }
    }

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur java, .Net
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur java, .Net

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Points : 71
    Points
    71
    Par défaut
    il manque peut-être un

    ?

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Je dirais plutôt ton algo de dessin où le contenu de Tab_Trajet n'a aucun impact. Tu utilises uniquement la taille de Tab_Trajet dans ton paint.

    De plus, il est amplement recommandé en Swing d'étendre la méthode protected paintComponent et non paint pour dessiner de sur un composant, la méthode paint s'occupant plus que du dessiner du composant en lui même.


    Sinon, essaie de suivre les conventions de code java histoire de permettre une lecture facilité aux gens qui t'aident


    ftp://ftp-developpez.com/cyberzoide/java/JavaStyle.pdf
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2009
    Messages : 42
    Points : 37
    Points
    37
    Par défaut
    Merci de vos réponses mais j'ai tout repris autrement et ça a fonctionné

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

Discussions similaires

  1. Mise à jour JPanel
    Par frto0 dans le forum Graphisme
    Réponses: 3
    Dernier message: 06/05/2010, 10h53
  2. Mise à jour de l'affichage dans un JPanel
    Par TheDreamTeam dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 06/04/2010, 21h40
  3. [JTree] Mise à jour d'un JPanel selon le noeud sélectionné dans le JTree
    Par Carlito95 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 23/03/2010, 20h42
  4. Mise à jour de JPanel
    Par Laughing Man dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 07/05/2008, 08h54
  5. [urgent]Affichage de JPanel et mise à jour
    Par joker.benj dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 23/05/2006, 16h17

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