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

  FORUM HardWare.fr
  Programmation
  Java

  Coment dessiner sur un JPanel a partir d'une autre classe?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Coment dessiner sur un JPanel a partir d'une autre classe?

n°253556
sashock
Posté le 25-11-2002 à 22:17:41  profilanswer
 

alors voila dans mon appli g une classe qui extend JPanel dont g surchargé la methode paintComponent() pour réaliser un dessin
maintenant j'aimerais bien rajouter des dessins pardessus g essayé ca:

Code :
  1. public dessine (MonAutreClasse c)
  2. {
  3. c.getGraphics().drawLine(...)
  4. }


et ca marche pas  [:tomawack]  NullPointerExeption  
Aidez moi s'il vous plait

mood
Publicité
Posté le 25-11-2002 à 22:17:41  profilanswer
 

n°253629
gfive
Posté le 25-11-2002 à 23:56:24  profilanswer
 

c'est sans doute parce que ton panel est pas encore affiché quand tu appelles ça : le contexte graphique (l'objet Graphics) n'est instancié qu'à l'affichage.

n°253633
--greg--
Posté le 25-11-2002 à 23:58:52  profilanswer
 

gfive!
y'a un topic à moi tout chaud qui n'attend que toi!! :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°253905
sashock
Posté le 26-11-2002 à 12:44:09  profilanswer
 

marche pas meme si j'appelle ma fonction apres tous les desins (et afichage) de mon JPanel :(  
d'autres idées?

n°253914
sashock
Posté le 26-11-2002 à 13:04:39  profilanswer
 

réctification : c en ecrivant le up que je me suis rendu compte que j'avais oublié d'essayer un truc

Citation :

le contexte graphique (l'objet Graphics) n'est instancié qu'à l'affichage.


g mis l'appel de ma fonction apres le show() du JFrame
maintenant ca s'execute mais mon affichage est ecrasé par le paintComponent du Jpanel en question=/

n°253979
gfive
Posté le 26-11-2002 à 14:24:28  profilanswer
 

C zarb, ton truc..enfin, je crois que tu devrais changer d'approche : le dessin de ta ligne, il faut qu'il soit fait DANS la méthode paintComponent (enfin, du coup, dans paint() en fait, puisque paintComponent appelle paint)  
 

n°254951
sashock
Posté le 27-11-2002 à 12:06:21  profilanswer
 

Le probleme c'est que dans le "cahier des charcges" j'ai  
* Une Classe Echiquier qui permet de dessiner l'echiquier...
*une Classe Piece qui permet de dessiner la piece et de la déplacer ... .
 
c assez vague sur la maniere de dessiner une piece

n°255071
gfive
Posté le 27-11-2002 à 13:58:21  profilanswer
 

bah....Dans un cas comme ça, il faut que tu réfléchisses de façon plus "objet", je dirais :  
Il te faut :  
- Une classe "modèle d'échiquier", qui sait où sont les pièces,  
- Une classe "echiquier" qui sait dessiner l'échiquer : elle demande au modèle les pièces à dessiner, puis donne à chaque pièce son context graphique, et lui "demande" de se dessiner dessus...
 
Perso, je ferais un truc du stye :

Code :
  1. public class Echiquier extends Cancas {
  2.   private ModeleEchiquer model;
  3. ...
  4. public void dessineEchiquier(Graphics g) {
  5. // Dessine les cases blanches et noires, et les lignes
  6. }
  7. public Rectangle getCell(int x, int y) {
  8. //retourne le rectangle (objet de java.awt) qui représente la case (x,y) de l'échiquier : dépend par conséquent de la taille d'affichage, de la largeur des lignes, etc..)
  9. }
  10. public void paint(Graphics g) {
  11.   dessineEchiquer(g);
  12.   Piece piece;
  13.   Rectangle case;
  14.   for (int i = 0; i < model.getPieces(); i++) {
  15.       piece = model.get(i);
  16.       case = getCell(piece.getX(), piece.getY();
  17.       g.setClip(case);
  18.       piece.draw(g, case.x, case.y);
  19.    }
  20. }
  21. }
  22. public interface Piece {
  23.     public int getX();
  24.     public int getY();
  25.     public void draw(Graphics g, int base_x, int base_y);
  26. }

 
 
Bon, après, le "for" est sans doute pas ce qu'on fait de mieux, mais c'est pas le point important dans ce design...L'important, c'est de bien séparer la "symbolique" (emplacement de la pièce, propriétaire, etc...géré dans le modèle, et dans les implémentations de l'interface pièce) et le dessin de l'échiquier, qui ne doit pas dépendre des pièces : il se fait toujours de la même façon..
 
Pour être rigoureux, il faudrait même 2 interfaces pour la pièce : une qui contient ses données (position, déplacements possibles à partir de la position, couleur, etc..) et une qui sait comment dessiner sa représentation à l'écran.
 
ouala ouala..

n°255581
sashock
Posté le 27-11-2002 à 21:38:03  profilanswer
 

merci bcp je v essayer de comprendre ton code  :hello:


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

  Coment dessiner sur un JPanel a partir d'une autre classe?

 

Sujets relatifs
[C-UNIX] Recuperer le command name a partir du PIDune classe MP3 sous java
Executer un script PHP à partir dun script perl ....[Java] Dessiner une ligne???
Affichage d'une image dans un JPanelacceder a un mysql sous linux a partir d'une appli java sous windows
Affiché des images a partir d'un repertoireCrée des liens à partir de mots dans un texte (expressions régulières)
Récupérer l'objet Page courant ds une classemettre a jour un JPanel
Plus de sujets relatifs à : Coment dessiner sur un JPanel a partir d'une autre classe?


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