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); } }

Rispondi quotando