Salve,
Avrei bisogno di conoscere l'altezza del carattere per dimensionare il JComponent, ma non c'è modo di recuperare questo dato. All'interno del metodo paintComponent grazie a FontMetric l'altezza viene ottenuta e messa nella variabile charH regolarmente visualizzata sul monitor. Ora perché quando vado a recuperare il valore di charH con il metodo getCharH() mi da 0!? Eppure la variabile charH è visibile nella classe. Del resto non c'è modo di usare un'oggetto Graphics al di fuori del metodo paintComponent in quanto classe Graphics è astratta e quindi non istanziabile.
Grazie per l'eventuale aiuto.

codice:
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import java.awt.Font;
import javax.swing.JFrame;


public class Metric extends JFrame {
    private int ft;
    public Metric() {        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);             
        setLayout(null);
        setSize(200, 100);
        setLocationRelativeTo(null);
        
        fMet fmt = new fMet();
        fmt.setSize(100,30);
        ft=fmt.getCharH();
        System.out.println("H: " + ft);
        add(fmt);
        setVisible(true);
    }


    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Metric();
            }
        });
    }    
}


class fMet extends JComponent{
    private int chrH;
    private String str="A";


    public void paintComponent(Graphics g){        
           super.paintComponent(g);
           Graphics2D g2D = (Graphics2D) g;
           
           FontMetrics fm=g2D.getFontMetrics();            
           chrH = fm.getHeight();
           System.out.println("chrH: " + chrH);
           g2D.setFont(new Font("Tahoma", 1, 12));
           g2D.drawString(str, 50, 30);
       }
       public int getCharH(){       
           return(chrH);
      }      
}