Как генерировать события из графики, сгенерированной Java2D - PullRequest
3 голосов
/ 07 января 2010

Я сделал Эллипс с помощью java.awt.geom.Ellipse2D

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

Ответы [ 3 ]

3 голосов
/ 07 января 2010

Вот простой пример программы для рисования объектов, которая демонстрирует щелчок, перетаскивание и множественный выбор. Также рассмотрим JGraph , гораздо более продвинутую библиотеку для визуализации графиков.

1 голос
/ 07 января 2010

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

Простой ответ: нет способа генерировать события мыши из графики, нарисованной на поверхности.

Однако вот альтернативный подход:

  1. Сохраните Ellipse2D объекты, из которых были взяты эллипсы, в List.
  2. Зарегистрируйте MouseListener в компоненте Swing, где пользователь должен щелкнуть.
  3. Из MouseEvent s, сгенерированных из щелчков мыши, определите местоположение, в котором была нажата мышь (используя MouseEvent.getPoint), и проверьте, произошел ли щелчок мыши в любой из Ellipse2D, содержащихся в вышеупомянутом List, с использованием метода Ellipse2D.contains.
1 голос
/ 07 января 2010

Я не думаю, что это возможно без большого количества вещей, закодированных вручную (позволяя холсту или чему-то еще, слушать события мыши и вычислять себя, если на эллипсе был нажат).

Если вы хотите сделать больше, рассмотрите сценограф. При этом эллипс будет самостоятельным объектом, и вы сможете зарегистрировать прослушиватели событий.


Редактировать как ответ на комментарий:

Сценарий: https://scenegraph.dev.java.net/ Google для больше ресурсов: сценарий Java И да. Scenegraph является частью JavaFX, но прекрасно работает с чистой Java (без FX)

...