Java JPanel的不同对象中的字体尺寸
我不知道该怎么问这个问题,我有一个子类JPanel,它用paintComponent绘制字符串。我有一个类,它以Java JPanel的不同对象中的字体尺寸,java,swing,jpanel,Java,Swing,Jpanel,我不知道该怎么问这个问题,我有一个子类JPanel,它用paintComponent绘制字符串。我有一个类,它以stringstring,intxpos,intypos,Font-Font为参数,然后用g.drawString(text.getstring,等等)绘制对象 但是,问题是,在构建文本类时,我希望根据给定的字符串和字体计算文本的宽度和高度,但方法似乎是这样: FontMetrics = g.getFontMetrics(Font); int height = metrics.getH
stringstring,intxpos,intypos,Font-Font
为参数,然后用g.drawString(text.getstring,等等)绘制对象
但是,问题是,在构建文本类时,我希望根据给定的字符串和字体计算文本的宽度和高度,但方法似乎是这样:
FontMetrics = g.getFontMetrics(Font);
int height = metrics.getHeight();
int width = metrics.stringWidth(string);
问题是g必须是paintComponent中的“Graphics”对象,但是它不在类的范围内,我是否应该将其作为参数传递给text类?或者有更优雅的方法吗?如果没有用于绘制字符串的图形上下文,则无法计算字符串的宽度。看
因此,每次调用paintComponent方法时,都需要计算该方法中的字符串宽度
但是,作为近似值,我使用字体大小作为高度,使用模糊因子作为宽度:string.length()*fontSize*0.545f
(我们使用的是比例因子为100的浮点)。在您自己的组件中,使用java.awt.font.TextLayout
。