簡體   English   中英

不能從靜態上下文引用非靜態方法getText()

[英]Non-static method getText() can not be referenced from a static context

我已經編寫了以下代碼,但是不斷收到“無法從靜態上下文引用非靜態方法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)
}

這行:

String bookNum = ISBNText.getText();

應該只是:

String bookNum = getText();

這是隱式的:

String bookNum = this.getText();

調用ISBNText.getText()試圖像靜態方法一樣調用它-即與類型關聯,而不是與該類型的任何特定實例關聯。 這顯然是沒有意義的,因為文本類型的實例相關聯。 我向您展示的兩個替代方案是等效的,找到已調用getISBNISBNText的文本。

您正在調用getText ,就好像它是靜態的一樣。 在您的getISBN方法中,從其前面刪除ISBNText

看來您還在冗余地實例化一個附加的JTextField 您正在編寫的類一個JTextField ,您不需要創建的其他類:

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

方法getText()不是靜態的,應該在對象的實例上調用。

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

我相信您的問題是您正在調用ISBNText.getText(),但getText()方法不是靜態方法。 只需從該調用的開頭刪除ISBNText,就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM