我只是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班中使用它?
答案 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)
由于p
是Frame
类的公共静态字段,因此您可以使用类名Frame.p
答案 4 :(得分:1)
您可以直接访问Frame.p
,因为字段是公共静态
答案 5 :(得分:1)
您可以使用其他类中的一个类的public
和static
字段及其类名。
由于在您的班级Frame
中,字段p
为public static
,因此您可以在班级p
中将字段Frame.p
用作Canves
。
有关静态字段的更多信息:Static fields