[Résolu] paintComponent pas appelé lors d'un resize window...

paintComponent pas appelé lors d'un resize window... [Résolu] - Java - Programmation

Marsh Posté le 04-06-2003 à 15:28:39    

Bonjour,
voilà mon pb :  
je dispose d'une fênêtre principale JFrame contenant un JPanel global dont le layout manager est BorderLayout() et qui contient une JToolBar et uun JPanel, dis panelDessin.
 
Dans le panelDessin, j'insère des JComponents sur lesquels je déssine des formes (ici, des rectangles et du texte, principalement). Le dessin est implanté dans la méthode :
protected void paintcomponent...
 
le paintComponent fonctionne bien : si la fenêtre est "icônifiée" et qu'elle réapparaît ensuite, tout est bien redéssiné....
mais, en cas de redimmenssionnement de la fenetre, tous les composants de dessin disparaîssent.... et en faisant la trace (juste un System.out dans le paintComponent), il semble que le paintComponent ne soit même pas appelé !!!
 
d'où cela peut il venir ?
 
la moindre piste, la moindre idée pourrait nous servir, n'hésitez pas :) merci !


Message édité par Moustaaki le 05-06-2003 à 10:42:42
Reply

Marsh Posté le 04-06-2003 à 15:28:39   

Reply

Marsh Posté le 04-06-2003 à 16:04:45    

ben a priori comme ca sans voir un peu plus de code, j'en sais rien moi
 
Par contre, la solution peut etre de catcher l'evement resize, et de repainter [:spamafote]  
 
mais bon, c'est bizarre ...
Kan tu dis que les dessins disparaissent, c'est quand tu resize plus petit, puis plus grand ?


---------------
get amaroK plugin
Reply

Marsh Posté le 04-06-2003 à 16:55:02    

Citation :

Kan tu dis que les dessins disparaissent, c'est quand tu resize plus petit, puis plus grand ?


 
les deux ;)
 

Citation :


ben a priori comme ca sans voir un peu plus de code, j'en sais rien moi  


et bien pour l'instant, j'n'ai pas tous sous la main :/
 
ouala déjà le paintComponent du composant graphique :
 
 

Code :
  1. public void paintComponent(Graphics g)
  2.   {
  3.     super.paintComponent(g);
  4.     //System.out.println("paintcomponent de composant graphique" );
  5.     setBackground(couleurDerriere);
  6.     jl.setForeground(couleurTexte);
  7.     if (this.selected)
  8.     {
  9.       ((Graphics2D)g).setStroke(new java.awt.BasicStroke(6));
  10.     }
  11.     else
  12.     {
  13.       ((Graphics2D)g).setStroke(new java.awt.BasicStroke(1));
  14.     }
  15.     if (this.mode)   // Cas de l'orientation de la droite
  16.     {
  17.           g.drawRect(0,0,(int)this.getBounds().getWidth()-1, (int)this.getBounds().getHeight()-1);
  18.     }
  19.     else
  20.     {
  21.           g.drawRect(0,(int)this.getBounds().getHeight()-1,(int)this.getBounds().getWidth()-1,0 );
  22.     }
  23.   }


 
de plus, on ajoute un composantGraphique à l'espace de dessin en utilisant la méthode add(JComponent ou Component, chai plu)
 
 
ouala pour te faire patienter ;)
aça doit pas venir de là mais on sait jamais ;)
j'essayerais de te récup' le code de la construction de la fenêtrte ainsi que la méthode qui insère un nouveau composant graphique dans l'espace de dessin.
 

Citation :

Par contre, la solution peut etre de catcher l'evement resize, et de repainter [:spamafote]  


 
:lol: on y a pensé... mais c crados ;) c'est censé fonctionner sans faire ça... :p


Message édité par Moustaaki le 04-06-2003 à 17:41:06
Reply

Marsh Posté le 05-06-2003 à 08:49:38    

Essaie en ajoutant ça dans ton code :  
 

Code :
  1. public void update(Graphics g) {
  2.     super.update(g);
  3.     paintComponent(g);
  4. }

 
 
Ca devrait suffire.

Reply

Marsh Posté le 05-06-2003 à 10:42:10    

bah en fait, yavait un layout manager sur le panel de desssin :/
 
panelDessin.setLayout(null);
 
ouala, ça marche mieux comme ça :D
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed