Как добавить оператор возврата?

0
задан khelwood 14 April 2019 в 10:42
поделиться

2 ответа

Метод paintComponent обновит ваши круги, если они как-то изменились. Это не то место, где можно сделать эти изменения самостоятельно. Поэтому код во втором цикле должен быть перемещен в другое место, например, в конструктор Circle и / или в метод moveCircle. paintComponent будет вызываться системой после внесения этих изменений. Кроме того, что касается первого цикла, не ясно, каким будет selectedCircle, вероятно, переменная экземпляра. Если это так, не закрашивайте его внутри петли, а только один раз.

0
ответ дан kalabalik 14 April 2019 в 10:42
поделиться

Вы можете переместить объявление 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;

        }
    }

}
0
ответ дан Nicholas Hirras 14 April 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: