Все мы прекрасно знаем такую замечательную структуру данных как — графы. Множество самых разнообразных задач формулируется в терминах графов и многие могут быть решены с помощью этого мощнейшего инструмента. Мы знаем кучу алгоритмов на графах и различные их реализации. Все это здорово, но что если перед нами вдруг встанет задача отобразить этот самый граф? Нет проблем? А если вершин с десяток, а если сотни, а куча дуг между ними?
Не стоит беспокоиться, с решеним подобного рода задач отлично справится библиотека Jgraph.
Jgraph — это open source бибилиотека для визуализации графов, написанная на Java и полностью совместима со Swing`oм. Библиотека разработана с поддержкой различных представлений сущностей и их отношений, неориентированные грфы, ориентированные графы, мультиграфы, графы с параллельными дугами, гиперграфы. Позволяет использовать различные алгоритмы позиционирования вершин и прочие вкусности, подробности тут.
Элементарный граф с двумя вершинами можно визуализировать следующим образом.
Прежде всего добавляем зависимость в наш pom файл.
И далее нехитрая форма
В результать получим следующее симпатичное окошко
![image](http://download.disk.yes.ru/download/enzynmmc?bd82f5d7539f0584295d720b76b67d2e)
Если Jgraph не понравится советую обратить внимание на не менне мощную библиотеку JUNG.
Надеюсь перечисленные выше библиотеки пригодятся в вашей работе и станут украшением вашего проекта, а можеть быть и неотъемлемой частью функционала.
Не стоит беспокоиться, с решеним подобного рода задач отлично справится библиотека Jgraph.
Jgraph — это open source бибилиотека для визуализации графов, написанная на Java и полностью совместима со Swing`oм. Библиотека разработана с поддержкой различных представлений сущностей и их отношений, неориентированные грфы, ориентированные графы, мультиграфы, графы с параллельными дугами, гиперграфы. Позволяет использовать различные алгоритмы позиционирования вершин и прочие вкусности, подробности тут.
Элементарный граф с двумя вершинами можно визуализировать следующим образом.
Прежде всего добавляем зависимость в наш pom файл.
jgraph
jgraph
5.5.1
И далее нехитрая форма
package ru.md.habr.graph;
import javax.swing.JFrame;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;
public class HabrGraph extends JFrame {
public static void main(String[] args) {
HabrGraph frame = new HabrGraph();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 320);
frame.setVisible(true);
}
public HabrGraph()
{
super("HabraGraph");
mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try
{
Object v1 = graph.insertVertex(parent, null, "Habra", 20, 20, 80, 30);
Object v2 = graph.insertVertex(parent, null, "Habr", 240, 150, 80, 30);
graph.insertEdge(parent, null, "Дуга", v1, v2);
}
finally
{
graph.getModel().endUpdate();
}
mxGraphComponent graphComponent = new mxGraphComponent(graph);
getContentPane().add(graphComponent);
}
}
В результать получим следующее симпатичное окошко
Если Jgraph не понравится советую обратить внимание на не менне мощную библиотеку JUNG.
Надеюсь перечисленные выше библиотеки пригодятся в вашей работе и станут украшением вашего проекта, а можеть быть и неотъемлемой частью функционала.