Рисование графика с помощью Swing: общий подход - PullRequest
5 голосов
/ 03 сентября 2011

Предположим, у меня есть график, состоящий из узлов и ребер, и я хочу нарисовать его в приложении Swing.Я не программист на Swing, но насколько я знаю, я вижу два подхода:

  1. рисовать весь график как компонент
  2. рисовать каждый узел и ребро как одинкомпонент

Я видел приложение, которое делает первое.Чтобы перетащить узел, нарисованный в виде круга, приложение проверяет, какой узел ближе всего к выбранной точке.Мне кажется, что это не очень эффективно.Возможен ли второй подход?И за кем следует следовать и почему?

Ответы [ 2 ]

7 голосов
/ 03 сентября 2011

Мы пишем и поддерживаем JGraph, и после 10 лет работы у нас все еще есть единое средство визуализации с навесным весом, которое используется для отрисовки всех ячеек.Причиной является стоимость памяти компонента на ячейку.Недостатком является то, что вам нужно заниматься обновлением и обработкой событий самостоятельно, но это не так уж и плохо.

У нас было многократное покрытие, всегда один и тот же вывод.

2 голосов
/ 03 сентября 2011

Любой подход возможен в зависимости от требований. GraphPanel - простой пример отдельного компонента, в то время как JGraph - более гибкая библиотека, использующая шаблон flyweight для эффективного рендеринга.

...