无法对非静态方法(Java)进行静态引用
该行导致错误“无法从FontMetrics类型静态引用非静态方法stringWidth(String)”无法对非静态方法(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
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")