Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2060 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Dessin et rafraichissement sous swing

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Dessin et rafraichissement sous swing

n°727520
amauryxiv
Posté le 16-05-2004 à 19:15:22  profilanswer
 

Bonjour.
 
J'essaie de faire un jeu que vous trouverez a l'adresse suivante si mon serveur tourne:
[url]
http://amauryxiv.no-ip.info:8080/pacman/pacman.htm
[/url]
 
Comme vous le verrez, en haut a gauche de mon JPanel conscre au score, il ya des dessins parasites qui apparaissent.
 
Quelqu'un a-t-til une idee de par quel truchement ce genre de parasites peuvent apparaitre ?
 
Merci d'avance a ceux qui connaissent bien swing et les graphics.


---------------
Amaury.
mood
Publicité
Posté le 16-05-2004 à 19:15:22  profilanswer
 

n°727640
amauryxiv
Posté le 16-05-2004 à 22:40:12  profilanswer
 

il semblerait ca a un rapport avec le double-buffering ... Mais comme je sais pas du tout ce que c'est ...


---------------
Amaury.
n°727813
xiluoc
un pc pour les unirs ....
Posté le 17-05-2004 à 04:57:48  profilanswer
 

swing utilise le double buffering par defaut donc ne ten occupe pas, sinon ta page mets 3 plombes a s afficher chez moi :/
 

n°727833
amauryxiv
Posté le 17-05-2004 à 08:10:49  profilanswer
 

xiluoc a écrit :

swing utilise le double buffering par defaut donc ne ten occupe pas, sinon ta page mets 3 plombes a s afficher chez moi :/


Ben oui c'est normal t'as essaye de te connecter chez moi en pleine nuit; et la nuit ma machine et donc mon serveur sont eteints .....
Reessaie plus tard en journee si t'as l'occasion.
 
Pour ce qui est du double-buffering, je vois bien qu'on peut difficilement s'en passer pour des pbs de performance, mais ce que je vois aussi, c'est quand je l'enleve, le bug disparait. C'est pour ca que j'en parle.
 


---------------
Amaury.
n°730637
amauryxiv
Posté le 18-05-2004 à 18:38:49  profilanswer
 

Ben j'esperait au moins une reponse ou deux ... Personne ne connait vraiment bien Swing alors ?


---------------
Amaury.
n°730647
EpoK
Let's burn
Posté le 18-05-2004 à 18:54:30  profilanswer
 

pack();
validate();
repaint();

n°730652
amauryxiv
Posté le 18-05-2004 à 18:58:29  profilanswer
 

EpoK a écrit :

pack();
validate();
repaint();


 
Je suis pas sur que tu as bien compris ma question .........


---------------
Amaury.
n°730721
nraynaud
lol
Posté le 18-05-2004 à 20:22:43  profilanswer
 

EpoK a écrit :

pack();
validate();
repaint();

hop, tu sors.


---------------
trainoo.com, c'est fini
n°730782
seabee
Posté le 18-05-2004 à 21:42:45  profilanswer
 

amauryxiv a écrit :

Ben j'esperait au moins une reponse ou deux ... Personne ne connait vraiment bien Swing alors ?


 
C'est un peu hard...
Il est open-source ton péty pacman? Si tu veux je regarde, mais là sans la moindre ligne de code...
C'est assez peu probable que le problème vienne de SWING. Vérifie bien tes repaint.
 
Sinon il est bien ton pacman, j'y ai perdu 12 minutes de ma vie [:itm]

n°730868
amauryxiv
Posté le 18-05-2004 à 22:52:14  profilanswer
 

Seabee a écrit :

C'est un peu hard...
Il est open-source ton péty pacman? Si tu veux je regarde, mais là sans la moindre ligne de code...
C'est assez peu probable que le problème vienne de SWING. Vérifie bien tes repaint.
 
Sinon il est bien ton pacman, j'y ai perdu 12 minutes de ma vie [:itm]


 
 
Merci du compliment. Mais il est pas encore termine .....
Ouais ya des chances que le probleme vienne pas de swing, mais j'ai beau chercher, je vois pas ce que ca peut etre.
 
Mes paint ils sont tous betes .... Ce qui est bizarre, c'est que je ne repeins jamais les deux panels (tableau et score) en meme temps. Donc je vois pas comment le paint de l'un peut parasiter le paint de l'autre.
 
Je pourrais bien t'envoyer le code, mais comme il est long tu serais un peu perdu je pense.
 
Par contre un trux qu'est sur, c'est que le bug est en rapport avec le fonctionnement du double-buffering. Parce que quand j'enleve le double-buffering, plus de bug ........
 
C'est peut-etre la dessus que quelqu'un pourrait m'amener des précisions.
 
Merci a ceux qui repondent.


---------------
Amaury.
mood
Publicité
Posté le 18-05-2004 à 22:52:14  profilanswer
 

n°730870
nraynaud
lol
Posté le 18-05-2004 à 22:58:30  profilanswer
 

tu es en multithread ? tu a bien suivi la règle du thread unique ?


---------------
trainoo.com, c'est fini
n°730877
amauryxiv
Posté le 18-05-2004 à 23:07:05  profilanswer
 

nraynaud a écrit :

tu es en multithread ? tu a bien suivi la règle du thread unique ?


 
C'est quoi la regle du thread unique ??????
 
Oui je suis en multithread. Pour chaque personnage t'as un Timer par exmeple.


---------------
Amaury.
n°730880
nraynaud
lol
Posté le 18-05-2004 à 23:11:43  profilanswer
 

amauryxiv a écrit :

C'est quoi la regle du thread unique ??????

J'ai trouvé le bug [:itm]
 
 
un article qui parle de "LA REGLE" :
http://java.sun.com/products/jfc/t [...] eads3.html
 
le tuto swing/threads :
http://java.sun.com/docs/books/tut [...] reads.html


---------------
trainoo.com, c'est fini
n°730907
amauryxiv
Posté le 18-05-2004 à 23:46:14  profilanswer
 

nraynaud a écrit :

J'ai trouvé le bug [:itm]
 
 
un article qui parle de "LA REGLE" :
http://java.sun.com/products/jfc/t [...] eads3.html
 
le tuto swing/threads :
http://java.sun.com/docs/books/tut [...] reads.html


 
Ouais ........ Enfin j'y comprends rien c'est en anglais. Et pis y disent que repaint est thread-safe alors que ca appelle invokeLater .... C'est le monde a l'envers. Je dois pas comprendre ce que veux dire thread-safe.
 
Enfin bref en appelant un paintImmediatly au lieu d'un repaint, le bug disparait
 
Visiblement mes deux panels partagent qqchose; mais quoi ?  
Un Graphics ? un buffer ?
 
Merci de vos reponse.


---------------
Amaury.
n°730910
nraynaud
lol
Posté le 18-05-2004 à 23:49:29  profilanswer
 

c'est nul, je vois pas l'intrérêt d'un repaint ou d'un paintImmediately.
 
Perso, j'ai encore jamais utilisé ces fonctions en swing.


---------------
trainoo.com, c'est fini
n°730911
amauryxiv
Posté le 18-05-2004 à 23:50:47  profilanswer
 

nraynaud a écrit :

c'est nul, je vois pas l'intrérêt d'un repaint ou d'un paintImmediately.
 
Perso, j'ai encore jamais utilisé ces fonctions en swing.


 
Ben qu'est ce que tu veux utiliser d'autres pour afficher qqchose ?????


---------------
Amaury.
n°730912
R3g
fonctionnaire certifié ITIL
Posté le 18-05-2004 à 23:51:50  profilanswer
 

nraynaud a écrit :

c'est nul, je vois pas l'intrérêt d'un repaint ou d'un paintImmediately.
 
Perso, j'ai encore jamais utilisé ces fonctions en swing.

t'as jamais utilisé repaint() ?

n°730917
nraynaud
lol
Posté le 19-05-2004 à 00:05:47  profilanswer
 

R3g a écrit :

t'as jamais utilisé repaint() ?

non, pas en swing.
 
Je suis le seul du forum à savoir comment on doit utiliser les composants swing ou quoi ?
 
on leur envoie des évènements, depuis le modèle, si le coposant décide que ça change la tronche du composant, il repeint, sinon, il repeint pas.
 
 
faire un setBidule() sur un composant, vous pouvez vérifier, ça créé un évènement de changement du paramètre. Le handler d'évènements se démerde avec la peinture et le layout.


Message édité par nraynaud le 19-05-2004 à 00:06:12

---------------
trainoo.com, c'est fini
n°730921
R3g
fonctionnaire certifié ITIL
Posté le 19-05-2004 à 00:07:58  profilanswer
 

nraynaud a écrit :

non, pas en swing.
 
Je suis le seul du forum à savoir comment on doit utiliser les composants swing ou quoi ?
 
on leur envoie des évènements, depuis le modèle, si le coposant décide que ça change la tronche du composant, il repeint, sinon, il repeint pas.
 
 
faire un setBidule() sur un composant, vous pouvez vérifier, ça créé un évènement de changement du paramètre. Le handler d'évènements se démerde avec la peinture et le layout.

ben ouais mais quand tu fais des composants à toi, faut bien appeler repaint() à un moment ou à un autre...

n°730925
nraynaud
lol
Posté le 19-05-2004 à 00:10:28  profilanswer
 

R3g a écrit :

ben ouais mais quand tu fais des composants à toi, faut bien appeler repaint() à un moment ou à un autre...

Faire des composants perso, c'est pas donné à tout le monde. On peut déjà faire plein de trucs en combinant ce qui existe.
 
Je suis même pas sûr que ce soit repaint() la fonction à appeller.


---------------
trainoo.com, c'est fini
n°730927
R3g
fonctionnaire certifié ITIL
Posté le 19-05-2004 à 00:13:01  profilanswer
 

nraynaud a écrit :

Faire des composants perso, c'est pas donné à tout le monde. On peut déjà faire plein de trucs en combinant ce qui existe.
 
Je suis même pas sûr que ce soit repaint() la fonction à appeller.

Disons que quand j'appelle repaint() c'est que j'ai codé paint() moi-même. Et oui c'est repaint() qu'il faut appeler.
L'exemple bateau que j'ai c'est un composant qui permet d'afficher une image.

n°730936
nraynaud
lol
Posté le 19-05-2004 à 00:28:23  profilanswer
 

R3g a écrit :

Disons que quand j'appelle repaint() c'est que j'ai codé paint() moi-même. Et oui c'est repaint() qu'il faut appeler.
L'exemple bateau que j'ai c'est un composant qui permet d'afficher une image.

on ne code pas le paint() sois-même en swing !
 
on peut éventuellement toucher à paintComponent(), par contre.
http://java.sun.com/docs/books/tut [...] cepts.html


---------------
trainoo.com, c'est fini
n°730939
nraynaud
lol
Posté le 19-05-2004 à 00:30:51  profilanswer
 

je vois pas de repaint là :
 
http://java.sun.com/docs/books/tut [...] ctice.html
 
 
Dans l'esprit, je conçois bien que, pas exemple, un jeu doit se repeindre régulièrement, pour montrer l'annimation.
 
Mais en fait, c'est l'état du jeu qui a changé, c'est donc bien suite à une modification du modèle qu'on va faire de la peinture.


---------------
trainoo.com, c'est fini
n°731183
R3g
fonctionnaire certifié ITIL
Posté le 19-05-2004 à 11:12:56  profilanswer
 

nraynaud a écrit :

on ne code pas le paint() sois-même en swing !
 
on peut éventuellement toucher à paintComponent(), par contre.
http://java.sun.com/docs/books/tut [...] cepts.html

Citation :

Swing components generally repaint themselves whenever necessary. [...] Behind the scenes, when a visible property changes the repaint method is invoked on the component to request that it be scheduled for painting.


Donc dans un composant que tu écris, il faut bien caser le repaint() dans les setters qui le nécessitent, il va pas s'y mettre tout seul.
Pour paint() / paintComponent() tu as raison, normalement paintComponent() suffit.

n°731354
amauryxiv
Posté le 19-05-2004 à 12:59:01  profilanswer
 

Enfin bref, un jeu c'est du graphisme pur, c'est pas un modele medel-view et on est bien oblige de recoder la methode paintComponent. Sachant ca, pour rafrachir les graphismes on a bien besoin de repaint() ou d'une methode qui joue le meme role.
Ya rien de plus evident.  
 
Enfin ce debat n'a pas repondu a ma question initiale. Le fait que des graphismes, normalement propres a mon premier panel, apparaissent sur mon deuxieme panel prouve les deux panel, et notement leur methodes paint(), partagent qqchose. Alors la question "qu'est ce qu'ils partagent ? Quel objet peut bien servir a l'affichage des deux composants ?"


---------------
Amaury.
n°731375
R3g
fonctionnaire certifié ITIL
Posté le 19-05-2004 à 13:10:25  profilanswer
 

amauryxiv a écrit :

Quel objet peut bien servir a l'affichage des deux composants ?"

théoriquement aucun. A mon avis tu fais une bidouille pas très nette dans tes methodes paint() ou paintComponent()

n°731622
nraynaud
lol
Posté le 19-05-2004 à 15:41:07  profilanswer
 

amauryxiv a écrit :

Enfin bref, un jeu c'est du graphisme pur, c'est pas un modele medel-view

super, tu as bien lu toi.


---------------
trainoo.com, c'est fini
n°732048
amauryxiv
Posté le 19-05-2004 à 20:11:59  profilanswer
 

R3g a écrit :

théoriquement aucun. A mon avis tu fais une bidouille pas très nette dans tes methodes paint() ou paintComponent()


 
Ben non je fais aucune bidouille justement. J'ai mon Graphics, je fais g.ceci(), g.cela() et puis c'est tout. Je vois pas de bidouille la-dedans.
 
Maintenant j'ai essaye de mettre des gifs animes. Et le resultat est le meme : des parasites apparaissent, ce qui doit apparaitre sur un panel apparait sur l'autre .........


---------------
Amaury.
n°732052
R3g
fonctionnaire certifié ITIL
Posté le 19-05-2004 à 20:13:14  profilanswer
 

amauryxiv a écrit :

Ben non je fais aucune bidouille justement. J'ai mon Graphics, je fais g.ceci(), g.cela() et puis c'est tout. Je vois pas de bidouille la-dedans.
 
Maintenant j'ai essaye de mettre des gifs animes. Et le resultat est le meme : des parasites apparaissent, ce qui doit apparaitre sur un panel apparait sur l'autre .........

et tu te repasses pas les Graphics d'un composant à l'autre o un truc comme ça? tu pourrais poster un peu de code (création des composants et méthodes de dessin) ?

n°732164
amauryxiv
Posté le 19-05-2004 à 21:44:17  profilanswer
 

R3g a écrit :

et tu te repasses pas les Graphics d'un composant à l'autre o un truc comme ça? tu pourrais poster un peu de code (création des composants et méthodes de dessin) ?


 
Bon ben voila un peu de code pour ceux qui s'y retrouveront:
 
Ma classe principale:

Code :
  1. package pacman.applets;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import pacman.tableau.*;
  6. import java.io.*;
  7. import pacman.timers.*;
  8. import pacman.graphics.*;
  9. import java.util.Enumeration;
  10. import java.net.URL;
  11. import javax.sound.sampled.*;
  12. import pacman.son.*;
  13. /**
  14. * <p>Title: Site personnel</p>
  15. * <p>Description: Site internet</p>
  16. * <p>Copyright: Copyright (c) 2002</p>
  17. * <p>Company: none</p>
  18. * @author Amaury de Boussineau
  19. * @version 1.0
  20. */
  21. public class FramePacman extends JFrame {
  22.   protected Tableau tableau;
  23.   protected Rectangle surfaceARepeindre = new Rectangle(0, 0, 0, 0);
  24.   protected boolean repeintPersonnage = false;
  25.  
  26.   protected PanelTableau panelJeu = new PanelTableau();
  27.   protected PanelScore panelScore = new PanelScore();
  28.  
  29.   protected Clip clip = null;
  30.   public FramePacman() throws Exception {
  31.     ObjectInputStream oos = new ObjectInputStream(this.streamTableaux());
  32.     int[][] points = (int[][]) oos.readObject();
  33.     this.tableau = new Tableau(this, points);
  34.     try {
  35.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  36.     }
  37.     catch(Exception e) {
  38.         this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  39.     }
  40.     this.setResizable(false);
  41.     this.getContentPane().setLayout(new BoxLayout(this.getContentPane(), BoxLayout.X_AXIS));
  42.     this.getContentPane().add(panelJeu);
  43.     this.getContentPane().add(panelScore);
  44.     this.pack();
  45.     this.setVisible(true);
  46.    
  47.     try {
  48.         this.clip = ClipProvider.getClip();
  49.         this.clip.open(AudioSystem.getAudioInputStream(new URL("http://amauryxiv.no-ip.info:8080/pacman/sons/fond.wav" )));
  50.     }
  51.     catch(Exception e) {
  52.         this.clip = null;
  53.     }
  54.    
  55.     this.commencerTableau();
  56.   }
  57.   protected Clip getClip() {
  58.       return this.clip;
  59.   }
  60.  
  61.  
  62.   protected InputStream streamTableaux() throws Exception {
  63. //    FileInputStream fis = new FileInputStream("tableaux" );
  64.       URL url = new URL("http://amauryxiv.no-ip.info:8080/pacman/tableaux" );
  65.       InputStream fis = url.openStream();
  66.       return fis;
  67.   }
  68.   public void commencerTableau() {
  69.     this.tableau.init();
  70.     ((JPanel) this.getContentPane()).paintImmediately(0, 0, 800, 800);
  71.     int reponse = JOptionPane.showOptionDialog(this, "Commencer ?", "PACMAN", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
  72.     if(reponse == JOptionPane.YES_OPTION) {
  73.         this.tableau.start();
  74.         if(this.clip != null) this.clip.loop(Clip.LOOP_CONTINUOUSLY);
  75.     }
  76.     else {
  77.         try {
  78.             System.exit(0);
  79.         }
  80.         catch(Exception e) {
  81.             this.dispose();
  82.         }
  83.     }
  84.   }
  85.   public void finTableau(boolean resultat) {
  86.     if(this.clip != null) {
  87.         this.clip.loop(0);
  88. //        this.clip.stop();
  89.     }
  90.     for(Enumeration e = MyTimers.timers.elements(); e.hasMoreElements();) {
  91.       ((java.util.Timer) e.nextElement()).cancel();
  92.     }
  93.     this.afficherResultat(resultat);
  94.   }
  95.  
  96.  
  97.   public void afficherResultat(boolean resultat) {
  98.       try {
  99.           synchronized(this) {
  100.               this.wait(2000);
  101.           }
  102.       }
  103.       catch(Exception e) {
  104.       }
  105.       String annonce = resultat ? "Gagné !" : "Perdu !";
  106.       JOptionPane.showMessageDialog(this, annonce, "Résultat", JOptionPane.INFORMATION_MESSAGE);
  107.       this.commencerTableau();
  108.      
  109.   }
  110.  
  111.  
  112.  
  113.   /**A PARTIR DE LA SE TROUVENT TOUTES LES METHODES ET CLASSES GRAPHIQUES QUE J'UTILISE
  114.    */
  115.   public synchronized void repeindre(Drawable element) {
  116.     this.repeintPersonnage = true;
  117.     this.surfaceARepeindre = element.surface(this.panelJeu);
  118.     panelJeu.paintImmediately(this.surfaceARepeindre);
  119.     this.repeintPersonnage = false;
  120.   }
  121.  
  122.   public synchronized void paint(Graphics g) {
  123.       super.paint(g);
  124.   }
  125.   public synchronized void actualiserScore() {
  126.       this.panelScore.paintImmediately(0, 0, 300, 800);
  127.   }
  128.   private class DirectionListener extends KeyAdapter {
  129.     public void keyPressed(KeyEvent e) {
  130.       Direction d;
  131.       int key = e.getKeyCode();
  132.       if(key == KeyEvent.VK_LEFT) d = Direction.LEFT;
  133.       else if(key == KeyEvent.VK_RIGHT) d = Direction.RIGHT;
  134.       else if(key == KeyEvent.VK_UP) d = Direction.TOP;
  135.       else if(key == KeyEvent.VK_DOWN) d = Direction.BOTTOM;
  136.       else return;
  137.       FramePacman.this.tableau.newDirectionForPacman(d);
  138.     }
  139.   }
  140.  
  141.  
  142.   private class PanelTableau extends JPanel {
  143.     public PanelTableau() {
  144.       super();
  145.       this.setBackground(Color.BLACK);
  146.       this.setPreferredSize(new Dimension(800, 800));
  147.       this.addKeyListener(new DirectionListener());
  148.       this.setFocusable(true);
  149.       this.requestFocus();
  150.     }
  151.     public void paintComponent(Graphics g) {
  152.         if(FramePacman.this.repeintPersonnage) {
  153.             Rectangle r = FramePacman.this.surfaceARepeindre;
  154.             if(r != null) {
  155.                 g.setClip(r);
  156.                 g.setColor(Color.BLACK);
  157.                 g.fillRect(r.x, r.y, r.width, r.height);
  158.                 FramePacman.this.tableau.redraw(g, this);
  159.             }
  160.         }
  161.         else {
  162.           super.paintComponent(g);
  163.           FramePacman.this.tableau.draw(g, this);
  164.         }
  165.     }
  166.   }
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.   private class PanelScore extends JPanel {
  175.       public PanelScore() {
  176.           this.setPreferredSize(new Dimension(300, 800));
  177.           this.setBackground(Color.BLACK);
  178.       }
  179.      
  180.       public void paintComponent(Graphics g) {
  181.           super.paintComponent(g);
  182.           Font font = new Font("Comic", Font.BOLD, 60);
  183.           g.setFont(font);
  184.           g.setColor(Color.CYAN);
  185.           g.drawRoundRect(5, 5, 290, 230, 20, 20);
  186.           g.drawRoundRect(6, 6, 288, 228, 20, 20);
  187.           g.drawRoundRect(7, 7, 286, 226, 20, 20);
  188.           g.drawString("Points:", 10, 100);
  189.           g.setColor(Color.BLUE);
  190.           g.drawRoundRect(5, 255, 290, 230, 20, 20);
  191.           g.drawRoundRect(6, 256, 288, 228, 20, 20);
  192.           g.drawRoundRect(7, 257, 286, 226, 20, 20);
  193.           g.drawString("Bonus:", 10, 350);
  194.           g.setColor(Color.RED);
  195.           g.drawRoundRect(5, 505, 290, 230, 20, 20);
  196.           g.drawRoundRect(6, 506, 288, 228, 20, 20);
  197.           g.drawRoundRect(7, 507, 286, 226, 20, 20);
  198.           g.drawString("Score:", 10, 600);
  199.           g.setColor(Color.BLUE);
  200.           g.drawString(String.valueOf(tableau.bonus), 10, 450);
  201.           g.setColor(Color.CYAN);
  202.           g.drawString(String.valueOf(tableau.pointsJoueur), 10, 200);
  203.           g.setColor(Color.RED);
  204.           g.drawString(String.valueOf(tableau.bonus + tableau.pointsJoueur), 10, 700);
  205.       }
  206.          
  207.   }
  208.   public static void main(String[] args) throws Exception {
  209.     new FramePacman();
  210.   }
  211. }


 
Normalement je fais aucune bidouille. Les Graphics je les prends comme ils arrivent et j'y touche pas.


Message édité par amauryxiv le 19-05-2004 à 21:45:13

---------------
Amaury.
n°732175
nraynaud
lol
Posté le 19-05-2004 à 22:05:16  profilanswer
 

     public synchronized void paint(Graphics g) {
            super.paint(g);
      }  
 
ça fait quoi là ça ?


---------------
trainoo.com, c'est fini
n°732179
amauryxiv
Posté le 19-05-2004 à 22:10:01  profilanswer
 

nraynaud a écrit :

public synchronized void paint(Graphics g) {
            super.paint(g);
      }  
 
ça fait quoi là ça ?


 
Ben a synchroniser la methode la methode paint pour qu'elle puisse pas etre appelee par deux threads en meme. Ca c'est juste pour retrouver le tableau complet quand j'iconifie et rouvre la fenetre;c'est uniquement pour ca.
En bref: la methode repeindre(Drawable) appelle paint() et quand tu agrandit le fentre ca appelle paint() aussi. Mais faut pas que deux appels soient confondus prce qu'ils ne doivent pas faire la meme chose.
Le premier repeint seulement un parsonnage, le deuxieme repeint tout le panel.


---------------
Amaury.
n°732182
nraynaud
lol
Posté le 19-05-2004 à 22:13:45  profilanswer
 

j'ai rien compris.


---------------
trainoo.com, c'est fini
n°732240
amauryxiv
Posté le 19-05-2004 à 22:54:45  profilanswer
 

nraynaud a écrit :

j'ai rien compris.


Ba h peu importe c'est pas important et c'est pas ca qui fait foirer le truc ........


---------------
Amaury.
n°732312
R3g
fonctionnaire certifié ITIL
Posté le 19-05-2004 à 23:48:50  profilanswer
 

j'ai lu en diagonale et j'ai pas vu le résultat parce que ton prog veut pas se lancer chez moi. Je vote pour un problème entre l'origine de surfaceARepeindre et l'origine de ton Graphics dans la méthode paint().

n°732947
amauryxiv
Posté le 20-05-2004 à 19:56:33  profilanswer
 

R3g a écrit :

j'ai lu en diagonale et j'ai pas vu le résultat parce que ton prog veut pas se lancer chez moi. Je vote pour un problème entre l'origine de surfaceARepeindre et l'origine de ton Graphics dans la méthode paint().


 
Mon programme peut pas se lancer quand ma machine est eteinte ...... T'as pas du tomber au bon moment.
 
Y risque pas d'y avoir un probleme avec surfaceARepeindre. C'est trop simple. Quand au Graphics utilise dans paint(), ben c'est celui fournit par Swing !...


---------------
Amaury.
n°734028
amauryxiv
Posté le 21-05-2004 à 16:52:13  profilanswer
 

Pffffffffff vous m'avez tous laisse tombe bande de nuls.


---------------
Amaury.
n°734163
R3g
fonctionnaire certifié ITIL
Posté le 21-05-2004 à 18:35:37  profilanswer
 

amauryxiv a écrit :

Mon programme peut pas se lancer quand ma machine est eteinte ...... T'as pas du tomber au bon moment.
 
Y risque pas d'y avoir un probleme avec surfaceARepeindre. C'est trop simple. Quand au Graphics utilise dans paint(), ben c'est celui fournit par Swing !...

Ce que je voulais dire c'est que dans un Graphics passé à la maéthode paint() d'un composant, les coordonnées sont relatives à ce composant. Et que donc le point 0, 0 de ton Rectangle ne correspond pas forcement au point 0,0 de ton Graphics...

n°734173
amauryxiv
Posté le 21-05-2004 à 18:47:51  profilanswer
 

R3g a écrit :

Ce que je voulais dire c'est que dans un Graphics passé à la maéthode paint() d'un composant, les coordonnées sont relatives à ce composant. Et que donc le point 0, 0 de ton Rectangle ne correspond pas forcement au point 0,0 de ton Graphics...


Oui mais bien sur .... mais mon rectangle il est pas (0, 0), il est ailleurs, la ou il doit etre.
Bref, les bugs n'ont rien a voir avec ca.
Le bug vient du fait que les composants partagent un Graphics (celui du buffer) et que je sais pas comment tout ca marche.


---------------
Amaury.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Dessin et rafraichissement sous swing

 

Sujets relatifs
Rafraichissemnt et SwingSwing et le refraichissement.
c++, prb de rafraichissement des fenetre Gtk2[XML - MathML - Java] Interpréter du MathML dans du Java (SWING)
[java] swing : comment réaliser un arbre binairepb de rafraichissement d'interface mdi
[swing] creer un JButton ou JLabel qui renvoie une page au browser[Java][Servlet] Rafraichissement de page générées
Problèmes de rafraichissement de page ASP.NET et IISProblème de rafraichissement
Plus de sujets relatifs à : Dessin et rafraichissement sous swing


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR