【问题标题】:JUNG Layout's preferred size, based on the size of the graphJUNG Layout 的首选大小,基于图表的大小
【发布时间】:2012-10-09 22:05:48
【问题描述】:

我正在使用 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 会根据图形大小动态调整,这样当我加载大图形时,我不必在顶点不再重叠之前放大十亿倍。

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

【问题讨论】:

    标签: java jung graph-visualization


    【解决方案1】:

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

    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 得到了这个(所以这段代码的功劳不是我的),但我似乎找不到原始问题。

    编辑:

    我找到了:

    How to manually set the zoom on a Jung visualisation?

    【讨论】:

    • 感谢您的回答,我确实将这种方法用于我的缩放功能。但我不知道如何根据我拥有的顶点数和我正在使用的布局来计算因子。
    • 我明白 - 我正在尝试实现类似的目标,但它目前不是高优先级。如果我确实发现了一种简单的方法,我会编辑我的帖子并让你知道。
    • 抱歉来晚了,但请尝试使用 vv.scaleToLayout(new CrossoverScalingControl())。
    • 不,这似乎不太奏效。不过没关系,我找到了解决方法。启动时,我将图表显示到第 2 级,要查看较低的级别,您需要在第 2 级展开节点。不过我会再玩一些,如果我找到解决方案,我会发布它在这里。
    • 这是一个迟到的回复,但您必须在布局上设置大小。 scaleToLayout 函数基于 vv.getPreferredSize / layout.getSize 的比率工作。
    猜你喜欢
    • 2021-03-11
    • 2018-07-30
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2017-02-25
    • 2016-08-10
    • 2016-04-16
    相关资源
    最近更新 更多