Да, есть сценарий для удержания вашего цикла while.
Самый простой способ - установить переменную в вашем файле класса private boolean stopLoop=false
и в проверке цикла while для этого атрибута while (!stopLoop)
.
Теперь MouseEvent просто установил атрибут stopLoop=true
и все готово (если вам нужна помощь, вот вам Как написать слушателя мыши
Другое решениеиспользует Swing Timer, как упомянуто @camickr (см. другой ответ). Предположим, у вас есть общий метод Timer вне вашего paint()
метода. Тогда вы не должны использовать цикл while. Я бы предложил просто нарисовать статическийи если вы хотите, чтобы ваш полигон вращался, просто нарисуйте следующий, но с другим углом и т. д.
Идея состоит в том, чтобы вырезать цикл while в метод Timer, чтобы вызывать paint()
много раз. Если вы хотите остановить вращение полигона, используйте для него логический флаг или остановите таймер. В первом случае вы можете обрабатывать более одного многоугольника, и каждый из них может быть запущен и остановлен, если вы обрабатываетебулевы переменные и событие мыши правильные.
Если у вас есть дополнительные вопросы, пожалуйста, добавьте больше подробностей, или bedder покажите нам минимизированныйкод.