Рисовать фигуры в Java на основе операторов if / else и actionlistenera - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь выяснить, есть ли способ рисовать изображения (drawRect (), drawOval () и т. Д. c.) На основе операторов if / else или с помощью actionListeners.

I Я не хочу публиковать полную проблему, потому что это для назначения, но для моего собственного сценария:

Если у меня есть кнопка на JPanel с именем «рисовать прямоугольник», и у меня есть x, y, ширина и высота от пользовательского ввода, есть ли способ прикрепить actionListener к «рисовать прямоугольник», который может каким-то образом нарисовать прямоугольник, используя эти значения (переданные по ссылке?).

Я знаю, что могу использовать paintComponent, но я не могу поместить это в actionListener, и он, кажется, делает все по своему усмотрению и не основываясь на определенных c действиях пользователя.

У меня действительно нет никакого кода для этого, потому что Я вообще не могу понять, как это сделать.

Спасибо.

1 Ответ

0 голосов
/ 05 февраля 2020

Если у меня есть кнопка на JPanel с именем «рисовать прямоугольник», и у меня есть x, y, ширина и высота из пользовательского ввода, есть ли способ присоединить actionListener к «рисовать прямоугольник» "который мог бы как-то нарисовать прямоугольник, используя эти значения (переданные по ссылке?).

Краткий ответ - да.

Как правило, вам нужно сохранить инструкции прямоугольника в модель, и пусть JPanel перерисовывает модель при нажатии любой из кнопок формы.

Давайте рассмотрим пример с прямоугольником. Что нужно знать, чтобы нарисовать прямоугольник на JPanel? Вам нужна начальная точка (вверху слева) и конечная точка (внизу справа). Вы можете использовать java.awt.Point для хранения начальной и конечной точки. Вы можете установить толщину линии в пикселях. Вы можете установить цвет прямоугольника, используя JColorChooser. Вы также можете установить прямоугольник как контур или заполненный выбранным цветом.

Это описание будет аналогичным для линии и треугольника. Круг немного отличается, с центральной точкой и радиусом. Как вы видите, у нас уже есть много информации, которую нужно отслеживать только с помощью этих простых геометрических фигур c.

Тогда возникает проблема самой поверхности рисования. Возможно иметь поверхность для рисования больше, чем может показывать экран вашего компьютера. Вы можете поместить поверхность рисования внутри JScrollPane.

. Все эти вещи должны быть определены, чтобы вы могли построить модель своего приложения. Это делается до того, как вы построите представление с использованием компонентов Swing, а контроллер с помощью прослушивателей действий.

...