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

无法对非静态方法(Java)进行静态引用,java,methods,reference,static,Java,Methods,Reference,Static,该行导致错误“无法从FontMetrics类型静态引用非静态方法stringWidth(String)” getName()方法是在player类中定义的,而p2是该类的一个实例,因此我不知道p2.getName()是一个静态引用。因为它不是-静态引用是stringWidth FontMetrics.stringWidth是一个实例方法。错误消息为: 无法从类型FontMetrics对非静态方法stringWidth(String)进行静态引用 stringWidth()方法不是静态方法,需要F

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


getName()
方法是在player类中定义的,而p2是该类的一个实例,因此我不知道
p2.getName()
是一个静态引用。

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

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

无法从类型FontMetrics对非静态方法stringWidth(String)进行静态引用

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


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

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

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

那么如何解决这个问题呢?@OliverBennett这取决于-您需要获取一个FontMetrics实例并将其称为
FontMetrics.stringWidth(p2.getName())
FontMetrics
是变量名。您需要
getFontMetrics()
而不是
getFontMetrics
g.drawString(p2.getName(), 800 - g.getfontMetrics().stringWidth(p2.getName()), 40);
g.getFontMetrics.stringWidth("your string")