[Java] Pas dessiner sur JLabel avec drawLine
Résolu
zzzer
Messages postés
938
Statut
Membre
-
viaccess Messages postés 3 Statut Membre -
viaccess Messages postés 3 Statut Membre -
Bonjour,
J'ai actuellement une classe étendant JPanel, dans lequel j'ai plusieurs JLabel contenant des images.
J'ai la possibilité et le besoin de créer des flèches (qui sont en fait des lignes avec un triangle au bout) sur ce JPanel. Il est probable qu'un JLabel soit entre le point origine et le point destination d'une de ces flèches.
Mon problème est que je veux que ces flèches ne soient pas dessinées sur les JLabel (pour ne pas modifier l'image). Y'a t-il un moyen de le faire ?
Voici mon code de dessin:
La méthode findLineAngle(...) fait juste une paire de calcul pour trouver l'orientation que doit avoir la flèche.
Merci d'avance !
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
J'ai actuellement une classe étendant JPanel, dans lequel j'ai plusieurs JLabel contenant des images.
J'ai la possibilité et le besoin de créer des flèches (qui sont en fait des lignes avec un triangle au bout) sur ce JPanel. Il est probable qu'un JLabel soit entre le point origine et le point destination d'une de ces flèches.
Mon problème est que je veux que ces flèches ne soient pas dessinées sur les JLabel (pour ne pas modifier l'image). Y'a t-il un moyen de le faire ?
Voici mon code de dessin:
public void drawArrow(int x1, int y1, int x2, int y2, Color col)
{
Graphics2D g2d = (Graphics2D)Wdst.rightArea.getGraphics(); // mon JPanel
int x[]={0,10,0};
int y[]={-10,0,10};
int xx[]={0,-10,0};
int yy[]={-10,0,10};
g2d.setColor(col);
if (x1 < x2)
{
g2d.drawLine(x1+31, y1+17 , x2-10, y2+17);
g2d.translate(x2-10, y2+17);
}
else
{
g2d.drawLine(x1, y1+17 , x2+31+10, y2+17);
g2d.translate(x2+31+10, y2+17);
}
double angle=findLineAngle(x1,y1,x2,y2);
g2d.rotate(angle);
if (x1 < x2)
g2d.fillPolygon(new Polygon(x,y,3));
else
g2d.fillPolygon(new Polygon(xx,yy,3));
g2d.translate(-x2,-y2);
g2d.rotate(-angle);
}
La méthode findLineAngle(...) fait juste une paire de calcul pour trouver l'orientation que doit avoir la flèche.
Merci d'avance !
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
Rédiger les messages dans un langage clair sans abréviation, style télégraphique ou mode SMS
Configuration: HP DV5 1123ef 3Go de RAM Core 2 Duo 2GHz NVidia 9600M GT
A voir également:
- [Java] Pas dessiner sur JLabel avec drawLine
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel touche ✓ - Forum Logiciels
- Jeux java itel 5360 - Forum Mobile
4 réponses
Salut,
Une méthode rapide serait d'appeler un repaint() pour l'ensemble de tes JLabel susceptibles d'être affectées par le drawLine.
++
Une méthode rapide serait d'appeler un repaint() pour l'ensemble de tes JLabel susceptibles d'être affectées par le drawLine.
++
zzzer
Messages postés
938
Statut
Membre
181
Merci pour ce conseil, j'ai essayé ça, mais les flèches disparaissent dans ce cas :/
Problème résolu grâce à l'aide de sandul.
J'ai donc surchargé la méthode paint() de mon JPanel, voici le code :
Merci à lui !
J'ai donc surchargé la méthode paint() de mon JPanel, voici le code :
public void paint (Graphics g)
{
super.paint(g);
redrawArrows(); // recréation de mes flèches
for (int i=0 ; i<Items.components.size() ; i++) // pour tous mes JLabel
Items.getNCHandlerNumber(i).repaint(); // repeindre mon JLabel
}
Merci à lui !