无法对非静态方法(Java)进行静态引用

时间:2013-07-02 21:43:06

标签: java methods reference static

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

该行导致错误“无法从FontMetrics类型对非静态方法stringWidth(String)进行静态引用。

getName()方法在播放器类中定义,而p2是该类的实例,因此我不知道p2.getName()是如何作为静态引用。

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

因为它不是 - 静态引用是stringWidth

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

  

无法对类型 FontMetrics

中的非静态方法 stringWidth(String)进行静态引用

答案 2 :(得分:1)

stringWidth()方法不是静态方法,需要FontMetrics的实例才能访问它。

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

答案 3 :(得分:1)

g.getFontMetrics.stringWidth("your string")