Java
我想在其他班级访问'dist'。但是,我无法这样做,因为变量位于方法内部。我无法将方法更改为“ public double”,因此无法将其放入get-method中。提示?
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (Circle circle : circles) {
circle.draw(g);
if (selectedCircle != null && selectedCircle == circle) {
selectedCircle.drawSelected(g);
}
}
for (int i = 0; i < circles.size(); i++) {
Circle c1 = circles.get(i);
for (int j = i + 1; j < circles.size(); j++) {
Circle c2 = circles.get(j);
double dist = c1.getPoint().distance(c2.getPoint()) + 1;
double dx = (c2.x - c1.x) / dist / dist;
double dy = (c2.y - c1.y) / dist / dist;
c1.x += dx;
c1.y += dy;
c2.x -= dx;
c2.y -= dy;
}
}
}
答案 0 :(得分:0)
如果您的圈子有所更改,则paintComponent
方法将更新您的圈子。并不是自己进行这些更改的地方。因此,第二个循环内的代码应移至其他位置,例如,移至Circle
的构造函数和/或moveCircle
方法中。完成这些更改后,系统将调用paintComponent
。另外,关于第一个循环,尚不清楚selectedCircle
是什么,可能是一个实例变量。如果是这样,则不要在循环内绘制它,而只能绘制一次。
答案 1 :(得分:0)
您可以将dist
声明移到方法之外,并移到类主体中,然后为其他类提供一个获取器,以利用它进行访问。
private double dist;
public double getDist() {
return dist;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (Circle circle : circles) {
circle.draw(g);
if (selectedCircle != null && selectedCircle == circle) {
selectedCircle.drawSelected(g);
}
}
for (int i = 0; i < circles.size(); i++) {
Circle c1 = circles.get(i);
for (int j = i + 1; j < circles.size(); j++) {
Circle c2 = circles.get(j);
dist = c1.getPoint().distance(c2.getPoint()) + 1;
double dx = (c2.x - c1.x) / dist / dist;
double dy = (c2.y - c1.y) / dist / dist;
c1.x += dx;
c1.y += dy;
c2.x -= dx;
c2.y -= dy;
}
}
}