#java #swing #awt #graphics2d #jslider
#java #swing #awt #graphics2d #jslider
Вопрос:
Я пишу программу, которая рисует определенный график (на основе параметров, заданных через JSlider) в системе координат. Проблема, с которой я сталкиваюсь, заключается в том, что моя система координат также нарисована на этом холсте, и если бы я использовал метод «clearRect», это удалило бы как график, от которого я хочу избавиться, чтобы нарисовать новый при обновлении JSlider, так и систему координат. Есть ли способ «заблокировать» систему координат, чтобы она не удалялась или что-то в этом роде?
Комментарии:
1. Просто нарисуйте в
paintComponent(Graphics g)
и в окружающей JPanel сетке.2. Нарисуйте это в режиме XOR и просто перерисуйте, когда захотите, чтобы это исчезло.
Ответ №1:
Не рисуйте непосредственно на холсте. Создайте список объектов, таких как система координат и objects. Вы можете манипулировать списком (добавлять или удалять объекты) и repaint
холстом, когда что-то меняется.
Каждый объект в списке может реализовать интерфейс Drawable
с помощью метода, скажем draw(). Итак, список будет List<Drawable>
. На холсте paint()
просмотрите все объекты и вызовите draw().