[Java] Dessiner une ligne???

Dessiner une ligne??? [Java] - Java - Programmation

Marsh Posté le 15-11-2002 à 17:15:54    

La question peut paraître débile, mais comment on fait pour insérer une ligne sur un layout. Autrement dit, qqch du style
 
Line myligne = new Line(x1,y1,x2,y2)
myligne.add()
 
Parce que là, cela me semble être une vrai merde...
Merci
 
P.S:


Message édité par korben le 15-11-2002 à 17:26:42
Reply

Marsh Posté le 15-11-2002 à 17:15:54   

Reply

Marsh Posté le 15-11-2002 à 17:32:02    

Bon, visiblement, t'as pas tout compris à la prog. graphique en Java :
 
Un Layout set a gérer la position d'objets, de type Component.
 
Une ligne, c'est pas un Component...A la limite, tu peux dessiner un ligne SUR un component...Ou plus exactement, sur le contexte graphique d'un Component....
 
Donc, si tu as un Component c, et que tu veux dessiner une ligne "dessus", tu fais :
 

Code :
  1. Graphics g = c.getGraphics();
  2. c.setColor(la_couleur)
  3. c.drawLine(x1,y1,x2,y2);

 
 
Mais ATTENTION!! : si ton composant est rafraichit par le système d'affichage, ou si les éléments qu'il contient sont dessinés APRES ta ligne, ou si un élément contenu dans ton composant est rafraichit, ta ligne risque de disparaître....Donc, il faut pas appeller ça n'importe où!!
 
Lis les javadoc des classes de java.awt (java.awt.Component, java.awt.Graphics, etc...)

Reply

Marsh Posté le 15-11-2002 à 18:01:43    

Oui, j'avais compris pour les Component. Mais je voulais savoir s'il y a avait pas des classes qui simplifiait justement tout cela en faisant comme si on pouvait ajouter des lignes sur un layout.
Par contre, merci pour les conseils concernant le rafraichissement.
Je pose la question car à l'époque, Symantec (visual café), fournissait justement des classes faisant cela.
Merci

Reply

Marsh Posté le 17-11-2002 à 19:04:02    

Up

Reply

Marsh Posté le 18-11-2002 à 08:51:32    

Ben non, y'a pas de méthode de "simplification" qui fasse ça, et heureusement, parce que ce serait un sacré bordel!

Reply

Marsh Posté le 18-11-2002 à 09:04:34    

gfive a écrit a écrit :

Ben non, y'a pas de méthode de "simplification" qui fasse ça, et heureusement, parce que ce serait un sacré bordel!  




Euh... pourquoi? C'est quand même assez pratique de pouvoir mettre une ligne directement sur un layout, comme un panel par exemple.

Reply

Marsh Posté le 18-11-2002 à 09:51:33    

Mais....Sur un panel, tu peux dessiner une ligne!!!!

Reply

Marsh Posté le 18-11-2002 à 10:17:31    

oui, donc il faut que j'insère un panel puis une ligne. Mais ok
Si vous avez une méthode hyper efficace, envoyez moi un exemple.
A+

Reply

Marsh Posté le 18-11-2002 à 10:23:06    

....Mais réfléchit, un moment!!  
Imagine que ton interface est dans une fenêtre (java.awt.Window), tu peux tout à fait dessiner une ligne sur la fenêtre!!! C'est un composant graphique comme les autres!! Ce que je te dis, c'esr que tu peux pas faire ça avec une méthode de la classe LayoutManager, et c'est tout à fait normal, puisque cette classe est responsable du PLACEMENT des composants!! Une ligne indépendante, le layout ne doit même pas savoir qu'elle est là, puisque justement, on veut qu'elle échappe à son contrôle...
 
Donc, la méthode que je t'aie donnée marchera, si tu l'applique sur le bon composant, pour mettre un ligne sur ce que rtu veux.

Reply

Marsh Posté le 18-11-2002 à 11:03:52    

gfive, ne t'énerve pas, voyons.  :D  
 
Je crois que je comprends ce que veux notre forumeur. Il voudrait avoir une ligne comme si elle était un composant. Après tout, pourquoi pas ? Certains utilisent des cadres (avec ombrage et tout et tout) comme des composants.
 
Dans ce cas, korben, tu dois écrire une classe "Line" qui hérite de "Component" et qui redéfinit toutes les méthodes qui vont bien, notamment paint(), getPreferredSize(), getMinimumSize().
Ensuite, tu pourras ajouter une instance de cette classe "Line" à un panel comme s'il s'agissait d'un composant comme un autre, et le layout du panel s'occupera tout seul du déplacement/redimensionnement de cette ligne.


Message édité par BifaceMcLeOD le 18-11-2002 à 11:05:10
Reply

Marsh Posté le 18-11-2002 à 11:03:52   

Reply

Marsh Posté le 18-11-2002 à 11:52:47    

Merci. La réponse est clair.
Je ne cherchais pas à vous emmerder. Symantec fournissait à l'époque des classes permettant de placer une ligne très facilement (comme déjà décrit plus haut) et je voulais savoir si cela existait aussi chez Java. Apparemment non, pour des raisons que vous m'avez données.
Merci
A+

Reply

Marsh Posté le 18-11-2002 à 13:39:43    

bah, y'a pas que ça, comme raison : quand tu utilises des packages externes, comme ça, ça pose d'autres problèmes au moment de la distribution de ton soft : t'es obligé de distribuer le pakage externe avec, il peut y avoir des problèmes de licence, etc...donc, plus généralement, j'ai tendance à ne pas utiliser ce genre de trucs.. ,)

Reply

Marsh Posté le 18-11-2002 à 17:39:42    

C'est bien pour cela que je réecris le code. Pour ne plus avoir à utiliser cette classe symantec :-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed