Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPanel的不同对象中的字体尺寸_Java_Swing_Jpanel - Fatal编程技术网

Java JPanel的不同对象中的字体尺寸

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

我不知道该怎么问这个问题,我有一个子类JPanel,它用paintComponent绘制字符串。我有一个类,它以
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