1

これは、アプリ開発に関する教科書からのものです。

import java.awt.TextField;

public class ESA
{
    public void init()
    {
        TextField abc = new TextField();
    }
    public void doSomething()
    {
        abc.setText("Hello World");
    }
}

問題は次のとおりです。コードに1つのエラーがあり、Eclipseでそれを解決する方法があるはずです。教科書には解決策はありません。

私の意見では、問題は「abc.setText」です。Eclipseには6つのクイック修正がありますが、どれも機能しません。

誰かがそれを解決する方法を考えていますか?

4

3 に答える 3

4

TextField変数はでローカルに定義されているためabc、メソッドのスコープでは使用できません。クラスメンバー変数として宣言するか、メソッドに渡すことができます。追加できますdoSomethinginit

private TextField abc;

交換してください

TextField abc = new TextField();

abc = new TextField();

インスタンスとクラスのメンバーを理解する

于 2013-02-17T10:39:52.790 に答える
1
import java.awt.TextField;

public class ESA
{
    private TextField abc;
    public void init()
    {
       abc = new TextField();
    }
    public void doSomething()
    {
        abc.setText("Hello World");
    }
}

これは機能するはずです。コードからabcはアクセスできません。doSomething()

于 2013-02-17T11:01:54.747 に答える
0

私は同じ問題、おそらく同じ教科書に取り組んだので、この質問に出くわします。

だから、もう2歳になってもこの質問に答えたいと思います。

「...Eclipseでそれを解決する方法があるはずです。教科書には解決策がありません。」

ここでの簡単な方法は「リファクタリング」です。「abc」を右クリックして「リファクタリング」を選択し、サブメニューの「ローカル変数をフィールドに変換」を選択します。

コードに必要なすべての変更は、Eclipseが独自に行います。結果のコードは、他のソリューションですでに投稿されているものと同じです。

于 2015-09-08T18:45:36.107 に答える