A JavaFX graph editor
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1196501 Sep 6, 2018
Permalink
Failed to load latest commit information.
src/main set min max zoom and zoom speed Aug 29, 2018
.gitignore initial commit Jun 23, 2018
Jenkinsfile gpg fix Jul 26, 2018
README.md v0.0.2 Sep 6, 2018
pom.xml v0.0.2 Sep 6, 2018
screenshot.png Update screenshot Aug 28, 2018

README.md

FXGraph

FXGraph is javafx graph visualizer. It's a continuation of a post I found on stackoverflow. Pull requests and feature requests are appreciated. You can find the original question here: https://stackoverflow.com/questions/30679025/graph-visualisation-like-yfiles-in-javafx

Features

  • Draggable nodes
  • Zooming / Panning
  • Custom nodes and edges
  • Random layout
  • Tree layout

Screenshot

Screenshot

Download

You can get it from maven central

<dependency>
	<groupId>com.sirolf2009</groupId>
	<artifactId>fxgraph</artifactId>
	<version>0.0.2</version>
</dependency>

Usage

You can look at com.fxgraph.graph.MainApp for a basic example. The relevant code for the screenshot above is as follows

Graph graph = new Graph();
Model model = graph.getModel();

graph.beginUpdate();

final ICell cellA = new RectangleCell("cellA");
final ICell cellB = new RectangleCell("cellB");
final ICell cellC = new RectangleCell("cellC");
final ICell cellD = new TriangleCell("cellD");
final ICell cellE = new TriangleCell("cellE");
final ICell cellF = new RectangleCell("cellF");
final ICell cellG = new RectangleCell("cellG");

model.addCell(cellA);
model.addCell(cellB);
model.addCell(cellC);
model.addCell(cellD);
model.addCell(cellE);
model.addCell(cellF);
model.addCell(cellG);

final Edge edgeAB = new Edge(cellA, cellB);
edgeAB.textProperty().set("Edges can have text too!");
model.addEdge(edgeAB);
final CorneredEdge edgeAC = new CorneredEdge(cellA, cellC, Orientation.HORIZONTAL);
edgeAC.textProperty().set("Edges can have corners too!");
model.addEdge(edgeAC);
model.addEdge(cellB, cellD);
final DoubleCorneredEdge edgeBE = new DoubleCorneredEdge(cellB, cellE, Orientation.HORIZONTAL);
edgeBE.textProperty().set("You can implement custom edges and nodes too!");
model.addEdge(edgeBE);
model.addEdge(cellC, cellF);
model.addEdge(cellC, cellG);

graph.endUpdate();

graph.layout(new RandomLayout());

TODO

If you have a feature request, just file an issue.

  • unit tests
  • better layouts