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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.