实际上,我有这些方法来获取字符串的宽度/高度,这两种方法都需要在paint组件内执行命令。但我想在类构造函数中获取此值。这个有可能?
public int getStringWidth(Graphics g){
g2d = (Graphics2D) g;
metrics = g2d.getFontMetrics(this.font);
return metrics.stringWidth(this.string);
}
public int getStringHeight(Graphics g){
g2d = (Graphics2D) g;
metrics = g2d.getFontMetrics(this.font);
int height = (int)font.createGlyphVector(metrics.getFontRenderContext(), this.string).getVisualBounds().getHeight();
return height;
}
font.createGlyphVector(metrics.getFontRenderContext(), this.string).getVisualBounds().getHeight()
这是我精确计算字符串高度大小的最佳命令,它也需要Graphics g
。 最佳答案
您可以尝试创建一个具有适当大小的BufferedImage,并在其上使用createGraphics()来获取可绘制的实际Graphics对象。
BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.createGraphics();
关于java - 不使用paintComponent(Graphics g)是否可以获得正确的字符串大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50335369/