Probleme avec la classse point de java.awt
zizosoft
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
zizosoft Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
zizosoft Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
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
Merci d'avance
A voir également:
- Probleme avec la classse point de java.awt
- Point de suite word - Guide
- Point de restauration - Guide
- Point gps - Guide
- Comment inserer une video dans un power point - Guide
- Impossible de choisir point relais cdiscount ✓ - Forum Consommation & Internet
2 réponses
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.
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.
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;
}
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;
}
Je ne connais pas cette classe GeneralPath, mais voici le cours officiel dessus :
Lesson: Working with Geometry
Lesson: Working with Geometry