Probleme avec la classse point de java.awt

zizosoft Messages postés 10 Statut Membre -  
zizosoft Messages postés 10 Statut Membre -
Bonjour, je suis sur un tp, et l'idée c 'est de dessiner des objets sur une interface graphique, le pb est que je specifie une position a mon dessin, avec le methode setLocation, mais il me trace a une autre position, quelqu'un saurait pourquoi j'ai ce probleme
Merci d'avance
A voir également:

2 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Difficile de t'aider exactement sans avoir plus d'information, mais d'un point de vue général, la méthode setLocation positionne le Component aux coordonnées du Container auquel il est ajouté (et non pas aux coordonnées de la fenêtre) ce qui provoque un décalage. Regardes donc quel est le système de coordonnées que tu veux utiliser et celui que tu utilises vraiment, dans ce cas tu seras amené à faire un décalage comme ceci :

Remplacer : component.setLocation(x,y) par :

Point pt = component.getParent().getLocation();
component.setLocation(pt.getX()+x,pt.getY()+y);

Remarque : ce code permet de positionner le point avec le système de coordonnées du Container component.getParent().getParent() à la place de celui du component.getParent(), mais si tu as plusieurs Container imbriqués cela n'est pas suffisant, il faudrait pouvoir répéter l'opération jusqu'à atteindre la JFrame, afin de travailler directement dans les coordonnées de la JFrame... Mais cela dépend bien sûr de la manière dont tu as conçu ton interface graphique.
1
zizosoft Messages postés 10 Statut Membre
 
merci beaucoup kx, elle dé ta reponse m'a vraiment aidé ta reponse, et j'ai pu resoudre mon probleme, cependant, j'ai une autre question, j'essai de dessiner une forme avec la classe GeneralPath, je le dessine mais voila il s'affiche pas, voila on bout de code:
public boolean dessiner(Graphics g)
{
if(cote>=0)
{
g.setColor(getCouleur());
GeneralPath path=new GeneralPath();
path.moveTo(0,0);// deplace le crayon sans ecrire
//Dessine une quadrique
path.quadTo(this.getPosition().getX(),this.getPosition().getY(),cote,cote);
//on trace des lignes
path.lineTo(0,cote);
path.lineTo(cote,cote);
path.lineTo(cote,0);
path.lineTo(0,0);
path.closePath();
return true;
}
else return false;
}
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Je ne connais pas cette classe GeneralPath, mais voici le cours officiel dessus :

Lesson: Working with Geometry
0
zizosoft Messages postés 10 Statut Membre
 
merci beaucoup
0