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 :

Double-Buffer et JPanel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 61
    Par défaut Double-Buffer et JPanel
    Bonjour,

    Voilà, j'ai un petit problème pour placer d'un coté (gauche) une colonne de bouton, et a droite une zone pour dessiner en double-buffer.

    J'ai d'abord fait ceci SANS double buffer, en créant deux JPanel (bouton / dessin), comme ceci:

    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
     Container contentPane = getContentPane(); 
     
          //zone dessin
          canvas = new JPanel(); 
     
          contentPane.add(canvas, "Center"); 
     
          //bouton
          JPanel p = new JPanel(); 
          p.setLayout( new GridLayout(nbCannon,0));
     
    	addButton(p, "Start", new ActionListener() {
     
                       //blabla est un thread...
                       new blabla(canvas); // j envoi le jpanel pour dessiner dedans...
     
                    //dans le thread blabla je recupete le Jpanel
                   // Graphics g = canvas.getGraphics()
                  // puis g.Draw....
     
    }
     
     contentPane.add(p, "West"); 
    }
     
    public void addButton(Container c, String title, ActionListener a) {
       JButton b = new JButton();
     
          c.add(b); 
          b.addActionListener(a); 
       }
    mais bon.. problèmeme ça clignote pas mal..
    j'ai donc voulut mettre du double-buffer "hardware"

    j'ai modifier en en ajoutant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       createBufferStrategy( 2 ); 
       strategy = getBufferStrategy();
    maintenant pour dessiner je doit utiliser le strategy
    en faisant Graphics g = strategy.getDrawGraphics();
    puis g.draw...

    mais la le probleme c'est que ça m'affiche depuis le coin 0,0 et donc ca dessine SUR les boutons....

    Je ne sais pas comment faire pour forcer a dessiner dans le JPnale de droite..

    SI quelqu'un pouvait me donner un coup de main, ou me conseiller si il pense que ma méthode n'est pas la bonne ?


    d'avance merci

  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
    Je pense que tu devrais simplement utiliser la methode JComponent.setDoubleBuffered(), sur ton JPanel.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 61
    Par défaut
    j'ai lu sur ce forum que faire setDOublebuffered, était inutile, vallait mieu le faire a la main

  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
    Ca m'etonne.

    Le double buffering est une fonctionnalité quasi obligatoire des toolkits graphiques, et swing le gère par défaut.

    Peux tu m'indiquer ou tu as vu ca (je n'ai pas trouvé) ?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 61

  6. #6
    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
    J'ai lu le post.

    Mais je te confirme que tu peux faire confiance a JComponent.setDoubleBuffered().

    Par contre, il faut quand meme rester dans le framework pour que ca marche.

    Dans le commentaire du code que tu as envoyé, j'ai vu un truc suspect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics g = canvas.getGraphics();
    Ce qui veut dire que tu crees un Graphics pour dessiner directement à l'écran.

    Y a-t-il une raison pour ca?

Discussions similaires

  1. JPanel double buffer
    Par adn013 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 14/08/2007, 09h43
  2. [JPanel] Double Buffering
    Par sliderman dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/06/2007, 09h51
  3. [MFC] Scinttillement vs Double buffering
    Par DamessS dans le forum MFC
    Réponses: 9
    Dernier message: 07/04/2005, 09h01
  4. Réponses: 7
    Dernier message: 03/08/2004, 16h33
  5. [Exception]Double buffering & NullPointerException
    Par Seiya dans le forum API standards et tierces
    Réponses: 25
    Dernier message: 09/07/2004, 18h41

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