有没有一种更友好的方法来获取FontMetrics的实例,而不是

FontMetrics fm = Graphics.getFontMetrics(Font);

由于以下示例,我讨厌这种方式:

如果要在游戏中创建菜单,并且希望所有菜单项都位于屏幕中央,则需要字体度量。但是,大多数菜单项都是可单击的。因此,我创建了一个Rectangles数组,所有矩形都适合项周围,因此当按下鼠标时,我可以简单地使用
for (int i = 0; i < rects.length; i++)
if (rects[i].contains(mouseX, mouseY)) { ... }

但是要创建矩形,我还需要FontMetrics作为它们的坐标。因此,这意味着我必须在菜单的绘制方法中构造所有矩形。

所以我想要一种获取FontMetrics的方法,以便可以在构造函数调用的方法中构造Rectangles。

最佳答案

对我来说,最简单的方法是:

Font font = new Font("Helvetica",Font.PLAIN,12);
Canvas c = new Canvas();
FontMetrics fm = c.getFontMetrics(font);

好处:
  • 如果您调用c.getGraphics(),它将返回null(因此没有图形对象)
  • 此( Canvas )也可以在无头模式下工作。

  • 现在您可以轻松获取高度和宽度...

    10-01 08:42