Origine d'un JPanel mal positionnée ?
Bonjour,
Voilà le problème qui me tient à coeur.
Pour faire aussi simple que possible, J'ai une JFrame qui contient une JToolBar à sa place habituelle (BorderLayout.NORTH) et un JPanel en-dessous (BorderLayout.CENTER).
Je redéfinie paintComponent() du JPanel de la manière suivante :
1) Je translate le contexte graphique : g2D.translate(100,0);
2) Je fais appel à createInverse pour rétablir g2D à l'AffineTransform de départ (qui redevient donc l'identité).
3) je fais g2D.drawLine(0, 0, 100, 100);
voir code ci-dessous pour plus de détail.
Alors, ma ligne devrait être tracée depuis l'origine du JPanel en haut à gauche du JPanel. Eh bien NON !!!
Elle est tracée à partir du haut (à gauche) de la barre d'outil. Comme si l'origine n'était pas revenu à l'origine du JPanel mais à l'origine du JFrame.
Donc, que s'est-il passé ?
Merci beaucoup...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
@Override
protected void paintComponent(Graphics g)
{
Graphics2D g2D = (Graphics2D)g.create();
super.paintComponent(g2D);
g2D.translate(100, 0);
AffineTransform saveAT = g2D.getTransform();
try{
g2D.transform(g2D.getTransform().createInverse());
} catch (NoninvertibleTransformException ex) {}
g2D.drawLine(0, 0, 100, 100);
g2D.setTransform(saveAT);
} |
origine d'un JPanel mal positionnée (bis)
Bonjour,
voilà mon problème formulé plus simplement :
Je crée une JFrame qui contient une JToolbar en haut et un JPanel en dessous. Le truc classique.. Je redéfinie le paintComponent de mon JPanel de la manière suivante :
(je translate g2D, puis je le remets à sa position initiale et je trace une ligne : voir code)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
@Override
protected void paintComponent(Graphics g)
{
Graphics2D g2D = (Graphics2D)g;
super.paintComponent(g2D);
g2D.translate(100, 0);
try{
g2D.transform(g2D.getTransform().createInverse());
} catch (NoninvertibleTransformException ex) {}
g2D.drawLine(0, 0, 100, 100);
} |
Alors ma ligne se dessinne certes, mais en prenant pour origine le haut de la JToolBar (c'est-à-dire l'origine de la JFrame) et pas l'origine de mon JPanel !!!
Que se passe-t-il ?
Merci bien.