2013-07-02 156 views
0
g.drawString(p2.getName(), 800 - FontMetrics.stringWidth(p2.getName()), 40); 

该行导致错误“无法使静态参考从类型FontMetrics对象的非静态方法stringWidth(字符串)。不能使静态参考非静态方法(Java)的

getName()方法是在播放器类中定义,和p2是类的一个实例,所以我看不出p2.getName()是一个静态参考

回答

3

您需要使用FontMetrics的实例。您可以获取从Graphics对象之一:

g.drawString(p2.getName(), 800 - g.getfontMetrics().stringWidth(p2.getName()), 40); 
2

因为它不是 - 静态参考是stringWidth

FontMetrics.stringWidth是一个实例方法。该错误消息是:

无法从类型使静态参考非静态方法stringWidth(字符串)的FontMetrics

+0

那么你会如何解决这个问题? –

+0

@OliverBennett取决于 - 您需要获取一个FontMetrics实例并将其称为“fontMetrics.stringWidth(p2.getName())”,“fontMetrics”是变量名称。 –

1

stringWidth()方法不是静态方法和需要一个FontMetrics的实例来访问它。

您正在以静态方式访问它,因此它会给您提供错误。

1
g.getFontMetrics.stringWidth("your string") 
+1

您需要'getFontMetrics()'而不是'getFontMetrics'。 –