Я использую фреймворк JUNG с FRLayout. Нравится:
layout = new FRLayout<String, Number>(graph);
preferredSize = new Dimension(600, 600);
final VisualizationModel<String, Number> visualizationModel =
new DefaultVisualizationModel<String, Number>(layout, preferredSize);
vv = new VisualizationViewer<String, Number>(visualizationModel, preferredSize);
Я поместил это в GraphZoomScrollPane. Я могу увеличивать, уменьшать масштаб, перемещать график, пока он не будет выглядеть так, как я хочу, но я бы хотел, чтобы он был таким, когда я запускаю свое приложение Swing.
Чего я точно хочу, так это того, чтобы PreferredSize графа динамически корректировался в зависимости от размера графа, чтобы при загрузке больших графов мне не приходилось увеличивать масштаб в миллиард раз, прежде чем вершины больше не перекрываются.
То, что не помещается на моей панели, обычно должно «исчезать» за полосами прокрутки.