Comment obtenir/créer objet Graphics2
Comment puis-je obtenir/créer un objet Graphics2D avant l'affichage de JPanel pour lequel j'ai redéfini la méthode 'paintComponent(Graphics g)'.
Dans mon cas je dessine les onglets dans la méthode paintComponent et je voudrais calculer la largeur des onglets en fonction de text que je passe au constructeur de mon JPanel.
Voici comment j'obtiens et dessine le texte sur l'onglet:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
private void createTitle(String text, Graphics2D g2d, int x, int y, boolean isSelected) {
Font font = ...mon font
Color foreground = ... mon Color
Graphics2D g = g2d;
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setPaint(foreground);
Point loc = new Point(x, y);
FontRenderContext frc = g.getFontRenderContext();
TextLayout layout = new TextLayout(text, font, frc);
System.out.println(text + ": " + layout.getBounds().getWidth());
layout.draw(g, (float) loc.getX(), (float) loc.getY());
} |
J'appelle cette méthode à partir de paintComponent dans laquelle je boucle sur mes tabs et les dessine:
Code:
1 2 3 4 5 6 7
|
...
for (BaseTabRectangle rectangle : rectList) {
...
createTitle(rectangle.getTitle(), g2d, rectangle.x + 15, rectangle.y + 18, rectangle.equals(selectedTab));
...
} |
j'ai essaye de faire comme ça dans le constructeur de ma calsse qui extends JPanel:
Code:
1 2
|
Graphics2D g2d = (Graphics2D)this.getGraphics(); |
mais à mon avis comme le composant même (ma Panel) n'est pas encore dessinée, alors g2D est toujours Null.
Quelqu'un a une idée ?
Merci.