我不知道怎么问这个,我有一个子类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中的对象,但是它不存在于类的范围内?或者有更优雅的方式吗?
答案 0 :(得分:1)
如果没有用于绘制图形上下文的图形上下文,则无法计算字符串的宽度。请参阅this question。
因此,每次调用paintComponent方法时,您都需要计算字符串宽度。
然而,对于近似值,我使用字体大小作为高度和宽度的软糖因子:string.length() * fontSize * 0.545f
(我们在浮点数中使用比例因子为100)。