从另一个类访问变量

时间:2014-02-12 09:31:20

标签: java swing class variables jpanel

我只是Java的新手。我有以下代码片段:

class Canvas extends JPanel{
    int x=-10,y=-10,z=-10;
    public Canvas() {
    }
    public void setCoordinates(int x,int y, int z){
        this.x=x;
        this.y=y;
        this.z=z;
    }
    public void paintComponent(Graphics g) {
        for(int i=0; i<50 ;i++){
            if(p[i].z==1) g.setColor(Color.red);
            else if (p[i].z==2) g.setColor(Color.green);
            else g.setColor(Color.blue);
            g.fillArc(p[i].x-5,p[i].y-5,10,10,0,360);
        }
    }
}

我有这个课程,它与p所属的课程分开。

public class Frame extends JFrame{
      ......
      public static Points[] p = new Points[50];
      ....
}

如何调用班级Frame中的积分,以便我可以在Canvas班中使用它?

6 个答案:

答案 0 :(得分:2)

如果您以这种方式声明:

public static Points[] p = new Points[50];

你可以这样做:Frame.p因为p 是静态的

相反,如果您声明private Points[] p = new Points[50]; 你在Frame class 中使用 getter方法:

public Point[] getPoints() {
    return this.p;
}

答案 1 :(得分:1)

Frame.p,因为它是static,其名称为p

答案 2 :(得分:1)

因为p是公共静态,您可以通过Frame.p访问它,但这不是很好而且优雅的方式

如果你想正确地做到这一点,你将创建单独的对象来保存你的所有点, 如果你只想要一个实例,你可以使它成为单例。如果在创建应用程序时创建它,可以将它传递给使用它的每个帧,或者只使用静态方法来访问它(如果你有单例,它将起作用)

答案 3 :(得分:1)

由于pFrame类的公共静态字段,因此您可以使用类名Frame.p

来访问它

答案 4 :(得分:1)

您可以直接访问Frame.p,因为字段是公共静态

答案 5 :(得分:1)

您可以使用其他类中的一个类的publicstatic字段及其类名。

由于在您的班级Frame中,字段ppublic static,因此您可以在班级p中将字段Frame.p用作Canves

有关静态字段的更多信息:Static fields