Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 荣格布局';s首选大小,基于图形的大小_Java_Jung_Graph Visualization - Fatal编程技术网

Java 荣格布局';s首选大小,基于图形的大小

Java 荣格布局';s首选大小,基于图形的大小,java,jung,graph-visualization,Java,Jung,Graph Visualization,我使用的是JUNG框架和FRP布局。像这样: layout = new FRLayout<String, Number>(graph); preferredSize = new Dimension(600, 600); final VisualizationModel<String, Number> visualizationModel = new DefaultVisualizationModel<String, Number>(layout, pref

我使用的是JUNG框架和FRP布局。像这样:

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);
layout=新的FRLayout(图形);
preferredSize=新尺寸(600600);
最终可视化模型可视化模型=
新的DefaultVisualizationModel(布局、首选大小);
vv=新的VisualizationViewer(visualizationModel,preferredSize);
我把它放在了一个GraphZoomScroll窗格中。我可以放大、缩小、移动图形,直到它看起来像我想要的那样,但我希望它在启动Swing应用程序时也是这样

我想要的是,图形的PreferredSize根据图形大小动态调整,这样当我加载大型图形时,在顶点不再重叠之前,我不必放大十亿倍


不适合我的面板的内容通常会“消失”在滚动条后面。

您可以使用以下程序对其进行编程缩放:

double amount = 1.0;    // Or negative to zoom out.
ScalingControl scaler = new CrossoverScalingControl();
scaler.scale(vv, amount > 0 ? 1.1f : 1 / 1.1f, vv.getCenter());
注意:我以前从StackOverflow得到过这个(所以这个代码的功劳不是我的),但是我似乎找不到原来的问题

编辑:

我发现它:


谢谢您的回答,我确实使用这种方法来实现缩放功能。但我不知道如何根据我拥有的顶点数量和使用的布局来计算因子。我明白-我正试图实现类似的目标,但目前优先级不高。如果我真的发现了一个简单的方法,我会编辑我的帖子并让你知道。很抱歉这么晚了,但请尝试使用vv.scaleToLayout(新的CrossoverScalingControl())。不,它似乎不太管用。但没关系,我找到了解决办法。启动时,我将图形显示到级别2,要查看较低的级别,需要展开级别2的节点。不过,我会再做一些尝试,如果我找到了解决方案,我会把它贴在这里。这是一个迟来的回复,但你必须在布局上设置大小。scaleToLayout函数根据vv.getPreferredSize/layout.getSize的比率工作。