有没有更友好的方法来获取FontMetrics的实例?
FontMetrics fm = Graphics.getFontMetrics(Font);
我不喜欢这种方法,因为以下例子说明了原因:
如果你想在游戏中创建一个菜单,并且想要所有的菜单项都居中显示,你需要使用字体度量。但是,大多数情况下,菜单项是可点击的。所以我创建了一个
矩形
数组,所有的矩形都适合于菜单项周围,这样当鼠标被按下时,我可以简单地使用for (int i = 0; i < rects.length; i++)
if (rects[i].contains(mouseX, mouseY)) { ... }
但是为了创建这些矩形,我还需要它们的坐标的字体度量。这意味着我必须在菜单的绘制方法中构造所有的矩形。
因此,我希望有一种方法来获取字体度量,以便我可以在构造函数调用的方法中构造矩形。
Canvas::getFontMetrics
只是调用Toolkit.getDefaultToolkit().getFontMetrics()
。因此,你只是在实例化大量垃圾。 - Martijn CourteauxgetFontMetrics
方法实现。它继承了 Component.java 中的方法。在那里调用了sun.font.FontDesignMetrics.getMetrics(font);
方法。如果你检查那个类,根本没有 Toolkit.getDefaultToolkit() 的调用... - Lonzak