-1

人々はこのエラーについてよく尋ねますが、私が取り組んでいるコードに役立つ答えを見つけることができませんでした. インスタンスか何かを持つことと関係があると思いますか?

ユーザーが GUI (GridJApplet) に数値を入力できるようにし、[Go] をクリックすると、その数値が JPanel (GridPanel) に渡されて、グリッドがその幅と高さに再描画されるようにします。

GridJApplet でゲッターとセッターを作成しようとしましたが、他のクラスでゲッターを使用できません。「非静的メソッド getGridSize() は静的コンテキストで参照できません」というエラーが表示されます。私は NetBeans で作業していますが、このコードはまだ完成していません。ユーザー入力を別のクラスで機能させる方法が本当にわかりません。

これがGridJAppletのコードです

public void setGridSize() {
size = (int) Double.parseDouble(gridSize.getText());
    }

public int getGridSize() {
return this.size;
   }

これはGridPanelのコードです

public void executeUserCommands(String command) {
    if (command.equals("reset")) {
        reset();
    } else if (command.equals("gridResize")) {
                NUMBER_ROWS = GridJApplet.getGridSize(); //error occurs here
            }

    repaint();
4

3 に答える 3

1

これは静的メソッドではありません。GridJAppletインスタンスメソッドを呼び出すには、のインスタンスが必要です。

または、静的メソッドにします。

于 2013-02-15T23:31:20.863 に答える
1

そのクラスのインスタンスではなく、GridJApplet クラスで getGridSize() メソッドを呼び出しています。getGridSize() メソッドは静的メソッドとして定義されていません。したがって、代わりに実際の G​​ridJApplet インスタンスで呼び出す必要があります。

于 2013-02-15T23:32:02.190 に答える
0

Java 101:

これをしないでください:

public void executeUserCommands(String command) {
    if (command.equals("reset")) {
        reset();
    } 
    else if (command.equals("gridResize")) {
                      // WRONG
        NUMBER_ROWS = GridJApplet.getGridSize(); //error occurs here
    }

その代わり:

    else if (command.equals("gridResize")) {
        // You must specify an *instance* of your class (not the class name itself)
        NUMBER_ROWS = myGridJApplet.getGridSize();
    }
于 2013-02-15T23:34:43.883 に答える