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

Agents de placement/Fenêtres Java Discussion :

Refresh de JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut Refresh de JFrame
    Bonsoir,

    J'ai un problème sur lequel je me casse les dents : un JFrame dans lequel je dessine. Si je minimise la fenêtre puis que je la restaure, le contenu ne se redessine pas. J'ai parcouru le forum mais les différents essais ne donnent rien. Voici le 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
    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
    public class mainFram2 extends JFrame 
    {
        public mainFram2()
        {
            setSize(300, 400);
     
            _contentPane = getContentPane();
     
            // Timer pour retarder l'affichage 
            javax.swing.Timer timer = new javax.swing.Timer(500, new ActionListener()
            {
                public void actionPerformed(ActionEvent evt) 
                {
                    createMenu();
                }
            });
            timer.start();
            timer.setRepeats(false);
     
            // Fermeture par la croix
            addWindowListener(new WindowAdapter() 
            {
                public void windowClosing(WindowEvent e)
                {
                    try
                    {
                      fermeture();
                    }
                    catch(Throwable err)
                    {
                      System.out.println("[Err] mainFram2::windowClosing(), " + err);
                    }
                }
            });
        }
     
        private void createMenu()
        {
             _image = createImage(80, 400);
            _graphicV = _image.getGraphics();
            _graphicV.setColor(new Color(227, 228, 197));
            _graphicV.fillRect(0, 0, 80, 400);
     
            _graphicV.setColor(new Color(225, 151, 86));
     
            // Rond en haut        
            _graphicV.fillRoundRect    (30,  20, 20, 20, 20, 20);
     
            _contentPane.getGraphics().drawImage(_image, 0, 0, this);
        }
     
        private void fermeture()
        {
            System.exit(0);
        }
     
        public void paintComponent(Graphics g)
        {
            validate();
        }
     
        public void update(Graphics g)
        {
            paint(g);
        }
     
        public void paint(Graphics g)
        {
            super.paint(g);
            validate();
            SwingUtilities.updateComponentTreeUI(_contentPane);
        }
     
        private Container _contentPane;
        private Image _image = null;
        private Graphics _graphicV = null;
    }
    Merci pour votre aide

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pourquoi tiens tu tant que ça à redéfinir les méthodes paintComponent(), paint() et autre, car pour l'instant tu ne fais pas grand chose à l'intérieur (redéfinir ces méthodes n'est en général justifié que s'i l'on veut dessiner sur le panel de fond).

    Dans ton cas il suffirait de créer un Jpanel (la JFrame n'est pas trop adaptée pour faire du dessin en général) à cet effet dont la méthode paintComponent(Graphics g) et celle ci seulement serait redéfinie, et qui réaliserait les opérations codées dans ta méthode createMenu (vu que celle ci dessine sur ton JPanel, elle doit s'exécuter à chaque raffraichissement, ce qui le comportement de paintComponent)

    Voilà quelques pistes à envisager pour que tu puisse avoir quelquechose de correct

  3. #3
    Membre confirmé

    Inscrit en
    Juin 2003
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 158
    Par défaut
    Merci beaucoup, cela marche beaucoup mieux en dessinant dans un JPane au lieu de le faire dans une JFrame

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

Discussions similaires

  1. Refresh de JFrame apres desérialisation
    Par Lionkid dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 17/02/2011, 11h47
  2. Refresh d'un JFrame et ses composants:
    Par choko83 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 13/05/2009, 09h42
  3. Probleme de Refresh avec TQuery et DBGrid
    Par insoo dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/11/2003, 17h20
  4. Réponses: 2
    Dernier message: 23/12/2002, 20h34
  5. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38

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