2016-04-25 8 views
-1

さて、私は過去のカップルの時間に光っぽく混乱してきました。今日私はnetbeansのGUI機能の使い方を学ぶことに決めました。私は正常に機能するものを作ったが、私は問題に遭遇した。 MenuクラスでGUI getメソッドの代替?

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 
    } 
} 

私は私のGUIを設計してきた、と私は、ユーザーが彼/彼女の名前を入力することにより、テキストボックスを持っている:ここで私はmainメソッドを持っているところ私は現在しているコードがあります。ユーザーがクリックして名前を保存できるボタンがあります。テキストボックスの内容は、playernameと呼ばれます。ここで私はとの値を保存することを目指して、ボタンをクリックすることによりトリガーされるイベントです。

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

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

は今、私の質問はこれです:どのように私はトップのプログラムに文字列の名前を取得することができますか?私はこのように、プレイヤー名を返しgetPName(と呼ばれるメニューのgetメソッド)を作成しようとしました:

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

をし、それがGUIクラス上の上質コンパイルしている間、私がしようとした場合と、クラスにそれを使用しますmainは、非静的メソッドを静的コンテキストでは参照できないことを示します。私はこれを回避する方法を知らない?あなたは

String pname = Menu.getPName(); 

:そう単純なものの上に長い記事については申し訳ありませんが、私は...ロスで本当に任意の助けてくれてありがとうね:D

+0

「静的でないメソッドは静的コンテキストで参照できませんか?」というエラーメッセージがありましたか?これがあなたの問題です。これをトラブルシューティングへの参照として使用するには何千もの質問があります。 – leigero

+0

@leigero私はほとんどのエラーを理解していますが、解決方法はわかりません。私が見つけたものはうまくいかなかった:(.. –

+0

これは愚かな質問ではなく、非常によく研究されたようなものではありません。静的な場所。これはできません、静的または非静的である必要があります。私はあなたにリソースをリンクしたいが、文字通り何千ものそれらのGoogleだけエラーメッセージ。 – leigero

答えて

1

あなたは、静的な方法で、非静的メソッドにアクセスしていますMenuのインスタンスを作成していないため、pnameMenu.getPName()に設定しています。これは、getPNameが静的メソッドであることを意味します。なぜなら、Menuクラスから直接呼び出すので、Menuのインスタンスからではなく、getPNameは静的メソッドではないからです。

本質的に「私はメニューオブジェクトがほしい」と言って、メニューがあなたのメニュークラスにあるべきすべてのものを定義しました。次に、メニューの「私にPNameを渡す」と言った。しかし、「メニューは何ですか?あなたは決してそれを作成したことがないようなものを定義しました」と聞くことができます。