getWidth无法正常作为类变量

时间:2014-04-24 22:38:10

标签: java class variables inner-classes acm.graphics

我对java(以及一般的编程)非常陌生,我试图创建一个简单地在屏幕中心绘制垂直线的程序。为此,我创建了一个变量x,它给出了屏幕中心的x坐标。我希望能够在其他私有方法中使用此变量。但是,当我运行代码时,不会显示任何行,就像x设置为0一样。

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

有人可以告诉我为什么第一个代码不起作用而第二个代码不起作用? 非常感谢你提前!

1 个答案:

答案 0 :(得分:0)

在第一个版本中getWidth()在实例初始化期间被调用,窗口的边界可能尚未设置。所以它仍然有效,但方法返回0,你可能不会在屏幕上看到这条线。