JPanel中不同对象的字体尺寸

时间:2014-11-24 14:07:50

标签: java swing jpanel

我不知道怎么问这个,我有一个子类JPanel,用paintComponent绘制字符串。我有一个以String string, int xPos, int yPos, Font font为参数的类,然后使用g.drawString(text.getstring, etc...)绘制对象。

然而,问题在于,当构造文本类时,我想根据给定的字符串和字体计算文本的宽度和高度,但是这样做的方法似乎是这样做:

FontMetrics = g.getFontMetrics(Font);
int height = metrics.getHeight();
int width = metrics.stringWidth(string);

问题是g必须是' Graphics'如果我将它作为参数传递给文本类,那么paintComponent中的对象,但是它不存在于类的范围内?或者有更优雅的方式吗?

1 个答案:

答案 0 :(得分:1)

如果没有用于绘制图形上下文的图形上下文,则无法计算字符串的宽度。请参阅this question

因此,每次调用paintComponent方法时,您都需要计算字符串宽度。

然而,对于近似值,我使用字体大小作为高度和宽度的软糖因子:string.length() * fontSize * 0.545f(我们在浮点数中使用比例因子为100)。