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