无法从静态上下文引用非静态方法getText()

时间:2011-02-17 18:37:20

标签: java

我编写了以下代码,但不断得到'非静态方法getText()无法从静态上下文引用错误。

有人可以帮助我在这里走上正轨吗?

public class ISBNText extends JTextField
{  
   protected static String bookNum;
   protected JTextField  bookText; 
   public ISBNText() 
   {
       super(20);
       bookText = new JTextField();
   }   
   public String getISBN()
   {           
      String bookNum = ISBNText.getText();
      return bookNum;
   }
   private String validateISBN(String bookNum)
}

4 个答案:

答案 0 :(得分:12)

这一行:

String bookNum = ISBNText.getText();

应该是:

String bookNum = getText();

暗示:

String bookNum = this.getText();

调用ISBNText.getText()正试图将其称为静态方法 - 即与类型相关联,而不是与该类型的任何特定实例相关联。这显然没有意义,因为文本 与该类型的实例相关联。我向您展示的两个替代方案是等效的,找到ISBNText已被调用getISBN的文本。

答案 1 :(得分:3)

您正在调用getText,就好像它是静态的一样。使用ISBNText方法从前面删除getISBN

看起来你也在冗余地实例化一个额外的JTextField。您正在编写的课程是 JTextField,而您不需要创建其他课程:

protected JTextField bookText;  // get rid of this
public ISBNText() 
{
   super(20);
   bookText = new JTextField();  // and this

答案 2 :(得分:3)

方法getText()不是静态的,应该在对象的实例上调用。

public String getISBN()
{           
   String bookNum = this.getText();
   return bookNum;
}

答案 3 :(得分:1)

我相信您的问题是您正在调用ISBNText.getText(),但getText()方法不是静态方法。只需从该通话开始处删除ISBNText,您就应该做得很好。