我编写了以下代码,但不断得到'非静态方法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)
}
答案 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,您就应该做得很好。