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;
}
}
}
如果paintComponent
方法以某种方式发生了变化,它将更新您的圈子。它本身不是进行这些改变的地方。因此,第二个循环中的代码应该移动到其他地方,例如,移动到Circle
的构造函数和/或moveCircle
方法中。在进行这些更改后,系统将调用paintComponent
。另外,关于第一个循环,还不清楚selectedCircle
会是什么,可能是一个实例变量。如果是这样,不要在循环中绘制它,而只是绘制一次。
你可以在你的方法之外移动dist
声明并进入类体,然后为你的其他类提供一个getter来利用它。
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;
}
}
}