Не создавайте свой собственный класс Круга.Вместо этого вы можете использовать класс Ellipse2D.Double(...)
.
Класс Ellipse2D реализует интерфейс Shape
.Интерфейс Shape
реализует метод contains(...)
.Таким образом, вы можете перебирать все Объекты в своем Списке и проверять, содержит ли Shape
точку мыши.
Так что я бы назвал, чтобы вы изменили класс Circle на класс ShapeInfo.Этот класс будет содержать два свойства:
- Форма
- Цвет
Таким образом, ваш базовый код будет:
//Circle circle = new Circle(randRadius, color, randX, randY);
//circles.add(circle);
Shape shape = new Ellipse2D.Double(...);
ShapeInfo info = new ShapeInfo(shape, color);
shapes.add( info );
В будущем вы можете даже добавить Rectangle
фигуры или любую другую фигуру, которую вы хотите, в свой список.
См. Игра с фигурами для получения более общей информации об этой концепции.
update(); //it is simply repaint();
Тогда просто вызовите repaint ().Это правильный способ вызова компонента для правильной перекраски.