Probleme avec la classse point de java.awt

Fermé
zizosoft Messages postés 6 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 10 octobre 2013 - 18 avril 2013 à 14:25
zizosoft Messages postés 6 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 10 octobre 2013 - 19 avril 2013 à 20:13
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
18 avril 2013 à 18:47
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 6 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 10 octobre 2013
19 avril 2013 à 19:06
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
19 avril 2013 à 19:23
Je ne connais pas cette classe GeneralPath, mais voici le cours officiel dessus :

Lesson: Working with Geometry
0
zizosoft Messages postés 6 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 10 octobre 2013
19 avril 2013 à 20:13
merci beaucoup
0