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

  FORUM HardWare.fr
  Programmation
  Java

  [Canvas] pb : ma méthode repaint() n'appelle pas mon paint() !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Canvas] pb : ma méthode repaint() n'appelle pas mon paint() !

n°647575
FrigoAcide
Posté le 18-02-2004 à 18:03:20  profilanswer
 

Salut à tous, comment faire dans ce code pour que mon repaint() appelle bien la méthode paint() ?
 

Code :
  1. public class test //extends une_classe_dont_jai_besoin  
  2. {
  3.     //contient une instance d'une classe fille de Canvas  
  4.     public Dessin dessin;
  5.     public test () {this.dessin = new Dessin ();}
  6.     static public void main (String args[]) {
  7.    test t = new test ();
  8.    t.dessin.repaint();
  9.    //je veux afficher le dessin  
  10.    java.awt.Frame frame = new java.awt.Frame ();
  11.    frame.add(t.dessin);
  12.    frame.setVisible(true);
  13.     }
  14. }
  15. class Dessin extends java.awt.Canvas {
  16.     public Dessin () {System.out.println("Constructeur Dessin" );}
  17.     public void paint (java.awt.Graphics g) {
  18.    System.out.println("je suis dans paint" );
  19.     }
  20. }


 
Ici la sortie n'affiche que "Constructeur Dessin".  
 
Merci !

mood
Publicité
Posté le 18-02-2004 à 18:03:20  profilanswer
 

n°647607
nraynaud
lol
Posté le 18-02-2004 à 18:37:33  profilanswer
 

1) Heu, t'es sûr(e) de pas vouloir faire du swing plutôt que du AWT ? Tu auras une doc complète, de l'aide et un système plus puissant.
 
2) on appelle jamais une méthode de peinture à la main, c'est le gestionnaire d'événements qui le fait.
 
 
3) il faudrait peut-être appeller super.paint() dans ton paint(), comme marqué dans la doc
http://java.sun.com/j2se/1.4.2/doc [...] .Graphics)
 
4) je ne sais pas quel est la layout que tu lui a donné, mais je soupçonne ton composant d'avoir une taille de 0x0 en haut à gauche de ta frame.
 
5) Je ne comprends pas que le "frame.setVisible(true)" n'appelle pas les fonctions de peinture de ton composant.


---------------
trainoo.com, c'est fini
n°647781
FrigoAcide
Posté le 18-02-2004 à 21:28:28  profilanswer
 

Alors :  
 
1\oui je fais du swing d'habitude, mais le problème est le même.
 
2\je peux l'appeller suite à un événement, mais le problème est là encore le même; j'ai fais l'appel à la main pour être certain qu'il serait executé.
 
3\merci je vais essayer ça.
 
4\ça ne devrait pas avoir d'importance dans notre problème, si ?
 
5\...
 
Bon merci, je vais essayer le 3\

n°647787
nraynaud
lol
Posté le 18-02-2004 à 21:39:30  profilanswer
 

Je suis au regret de te dire qu'il n'y a aucune (bon disons infime, à cause du coup de l'exception) chance que le 3) résolve ton problème.


---------------
trainoo.com, c'est fini
n°648210
FrigoAcide
Posté le 19-02-2004 à 10:03:19  profilanswer
 

En fait ouais c'est clair, vu que le paint() n'est pas appellé du tout.

n°649070
gfive
Posté le 19-02-2004 à 22:10:15  profilanswer
 

ben tu ajoutes bêtement dans le code de Dessin :  
 
public void repaint() {
if (getGraphics() != null) {
this.paint(getGraphics());
}
}

n°650183
FrigoAcide
Posté le 20-02-2004 à 19:09:50  profilanswer
 

Je savais pas qu'on pouvait obtenir le Graphics associé à la class courante aussi facilement; merci !

n°650193
R3g
fonctionnaire certifié ITIL
Posté le 20-02-2004 à 19:24:51  profilanswer
 

nraynaud a écrit :

2) on appelle jamais une méthode de peinture à la main, c'est le gestionnaire d'événements qui le fait.

On appelle jamais paint() à la main, mais appeler repaint() c'est tout à fait normal.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°650195
R3g
fonctionnaire certifié ITIL
Posté le 20-02-2004 à 19:26:29  profilanswer
 

Ah au fait : repaint n'appellera paint() que si il y a qqchose à dessiner : toi tu l'appelle avant d'afficher la Frame, donc ton composant n'est pas visible, donc il n'y a aucun objet Graphics associé, donc paint() n'est pas appelé, c'est normal.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°650197
nraynaud
lol
Posté le 20-02-2004 à 19:28:07  profilanswer
 

R3g a écrit :

On appelle jamais paint() à la main, mais appeler repaint() c'est tout à fait normal.

bah oui, en dehors de la boucle de répartition des événements en plus c'est la fête.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 20-02-2004 à 19:28:07  profilanswer
 

n°650198
R3g
fonctionnaire certifié ITIL
Posté le 20-02-2004 à 19:32:20  profilanswer
 

nraynaud a écrit :

bah oui, en dehors de la boucle de répartition des événements en plus c'est la fête.

Imagine un composant chargé d'afficher une image. Il contient une référence vers un objet Image et dessine celle-ci sur lui-même dans son paint(). Tu changes l'image à afficher ; comment tu dis au composant de se mettre à jour sans appeler repaint() ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°650199
R3g
fonctionnaire certifié ITIL
Posté le 20-02-2004 à 19:35:47  profilanswer
 

http://java.sun.com/products/jfc/t [...] html#smart

Citation :

Programs may trigger a future call to paint() by invoking repaint(), but shouldn't call paint() directly.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°651732
FrigoAcide
Posté le 23-02-2004 à 12:24:44  profilanswer
 

Merci pour vos réponses :)


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

  [Canvas] pb : ma méthode repaint() n'appelle pas mon paint() !

 

Sujets relatifs
comment récuperer l'adresse d'un objet à partir d'un methode (static)Appler une méthode C++ dans un shared object
[Vba] question sur la methode add dans la collection workbook[SOLUCE]access.combobox.addite m ---> methode inconnue sous access2000
[PHP]probleme pour recuperee une donnee passee en methode GET ou POSTenvoi de donnée en methode post par un hearder...
Veut pas virer un cookie malgré méthode fonctionnant pour un autre[Swing] Comment s'appelle ce composant ?
[XML DOM] Javascript et la méthode save()[VB] - methode popupmenu -> appli qui se ferme pas. PQ?
Plus de sujets relatifs à : [Canvas] pb : ma méthode repaint() n'appelle pas mon paint() !


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