2016-04-25 73 views
-1

好吧,所以我在过去的几个小时里一直非常困惑。今天我决定学习如何使用netbeans的GUI功能。我成功运作了一次,但我遇到了一个问题。这里是我当前的代码在那里我的主要方法:GUI获取方法替代?

public class MonsterDefense 
{ 
    public static void main(String args[]) throws Exception 
    { 

    new Menu().setVisible(true); 
    String pname = Menu.getPName(); //This line won't work, just showing what I want to do 
    } 
} 

在Menu类我设计我的GUI,我有一个文本框,从而用户输入他/她的名字。有一个按钮,用户可以点击保存名称。文本框的内容称为playername。这里是通过点击我的目标是保存该值与按钮触发事件:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
{           

String name = playername.getText(); 
System.out.println(name); 
} 

现在我的问题是这样的:我怎样才能得到字符串名进入前程序?我试图创造菜单)get方法称为getPName(返回playername,像这样:

public String getPName() 
{ 
    return playername.getText(); 
} 

,虽然它编译的GUI类精细,但如果我尝试使用它与类它主要告诉我一个非静态方法不能在静态上下文中被引用。我不知道如何解决这个问题?很抱歉的长期职位上这么简单的东西,但我真的很茫然..感谢您的帮助:d

+0

您是否使用了错误消息“非静态方法无法在静态上下文中引用?”这是你的问题。有成千上万的问题可以用来解决这个问题。 – leigero

+0

@leigero我已经了解了大部分错误,但我不知道如何解决它。事情发现似乎没有工作:(.. –

+0

这不是一个愚蠢的问题,只是看起来不像一个很好的研究。你有一个非静态(动态)方法,你试图从一个参考静态位置这不能完成,他们需要静态或非静态。我会链接你一个资源,但有成千上万的只是谷歌的错误信息。 – leigero

回答

1

您正在访问的静态方法非静态方法:

String pname = Menu.getPName(); 

你没有创建菜单的实例,所以您正在设置pname等于Menu.getPName()。这意味着getPName是一个静态方法,因为你直接从Menu类调用它,而不是从Menu的一个实例调用它,但getPName不是一个静态方法,所以你不能这样做。

实质上你已经说过“我想要一个Menu对象”并且定义了菜单应该在你的Menu类中的所有东西。然后你说“给我PName”的菜单。但有人可能会问:“呃,什么菜单?你只是定义了它应该是什么样子,你从来没有创建过。”