0

私はJava(およびプログラミング全般)に非常に慣れていないため、画面の中央に垂直線を描くだけのプログラムを作成しようとしています。これを行うためxに、画面の中心の x 座標を与える変数を作成しました。この変数を他のプライベート メソッド内で使用できるようにしたかったのです。ただし、コードを実行すると、x0 に設定されているかのように行が表示されません。

import acm.graphics.*;
import acm.program.*;
import java.awt.*;

public class Target extends GraphicsProgram {   
    int x = getWidth()/2;
    public void run() {
        GLine line = new GLine (x,0,x,300);
        add (line);
    }
}

以下のように変数をメソッドx内に配置run()すると、線は正しく描画されますが、変数がクラス変数ではなくインスタンスになることを理解しているため、後で他のプライベートメソッドで使用することはできません変数であるためrun()、他の方法ではアクセスできませんか?

public class Target extends GraphicsProgram {   
   public void run() {
        int x = getWidth()/2;            
        GLine line = new GLine (x,0,x,300);
        add (line);
    }
}

最初のコードが機能しないのに、2 番目のコードが機能する理由について誰かが教えてくれますか? 事前にどうもありがとうございました!

4

1 に答える 1

0

最初のバージョンgetWidth()では、インスタンスの初期化中に呼び出され、ウィンドウの境界はおそらくまだ設定されていません。したがって、引き続き機能しますが、メソッドは 0 を返し、画面に行が表示されない可能性があります。

于 2014-04-24T22:45:57.067 に答える