Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 如何仅从字体和FontRenderContext获取FontMetrics_Java_Graphics_Fonts_Fontmetrics - Fatal编程技术网

Java 如何仅从字体和FontRenderContext获取FontMetrics

Java 如何仅从字体和FontRenderContext获取FontMetrics,java,graphics,fonts,fontmetrics,Java,Graphics,Fonts,Fontmetrics,我正在制作的程序使用FontMetrics完成的字符串相关计算。由于FontRenderContext可能会有所不同,因此需要正确进行计算,并且我保存了它的静态实例,以便可以在任何地方访问它 我找到了一种使用字体和上下文计算字符串宽度的方法(没有Graphics2D实例): font.getStringBounds(string,Window.fontRenderContext).getWidth() 我遇到的问题是计算下降、上升和FontMetrics提供的其他任何东西。我可以: 创建画布,

我正在制作的程序使用FontMetrics完成的字符串相关计算。由于FontRenderContext可能会有所不同,因此需要正确进行计算,并且我保存了它的静态实例,以便可以在任何地方访问它

我找到了一种使用字体和上下文计算字符串宽度的方法(没有Graphics2D实例):

font.getStringBounds(string,Window.fontRenderContext).getWidth()

我遇到的问题是计算下降、上升和FontMetrics提供的其他任何东西。我可以:

  • 创建画布,获取其图形,对其应用所有设置并获取FontMetrics。它需要大量的代码,并且不能像Canvas那样稳定地工作。getGraphics可以任意返回null
  • 延迟这些计算,直到我的绘画(Graphics2D g)方法运行,我可以直接获得FontMetrics
  • 尝试从Font.getStringBounds获取所需的值。我肯定能做到这一点

仅仅从字体和上下文(getStringBounds由FontMetrics值组成)就可以获取getStringBounds,这让我很困惑,但当我需要获取原始的下降、上升等值时,这就变成了一件令人头痛的事。

您是否尝试过
SwingUtilities.computeStringWidth()
?@WJS此方法需要FontMetrics,而SwingUtilities没有此类方法的上升和下降。正如我所说的,我找到了一种找到宽度的方法,但我找不到任何其他方法。(我无法计算将文本放在Y轴上的位置)可能会有所帮助。不幸的是,没有,我已经知道FontMetrics是如何工作的。