使用JUNG的放大镜头示例

时间:2016-05-18 21:56:07

标签: jung

我正在尝试在项目中使用JUNG库。 但我无法确定是否有一种简单的方法可以改变示例项目中放大镜的大小。 目前在所有示例中,放大镜被限制为图表视图的大小和窗口大小。 有没有一种方法只设置镜头的大小并打破窗口大小的链接? 我正在使用最新的JUNG版本。

提前非常感谢你!

的问候,

纳尔逊

2 个答案:

答案 0 :(得分:0)

您所做的本地修复(将构造函数参数添加到ViewLensSupport以直接指定镜头大小)似乎既有必要又足以解决您的问题。

我同意能够独立控制镜头尺寸是有意义的;随时向我们发送拉取请求:https://github.com/jrtom/jung/pulls

答案 1 :(得分:0)

您是否看到可以通过按下并拖动其边缘来使用鼠标调整镜头大小?在这种情况下调用的代码是:

lensTransformer.setViewRadius(r);

在edu.uci.ics.jung.samples.LensDemo中,我可以通过修改代码来设置镜头的初始大小(到20):

(请注意,您仍然可以在镜头边缘使用鼠标以稍后调整大小)

    final JRadioButton hyperView = new JRadioButton("Hyperbolic View");
    hyperView.addItemListener(new ItemListener(){
        public void itemStateChanged(ItemEvent e) {
            hyperbolicViewSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
            // added to set the lens size to 20
            if (e.getStateChange() == ItemEvent.SELECTED) {
                MutableTransformer mt = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW);
                ((LensTransformer) mt).setViewRadius(20);
            }
        }
    });
    final JRadioButton hyperModel = new JRadioButton("Hyperbolic Layout");
    hyperModel.addItemListener(new ItemListener(){
        public void itemStateChanged(ItemEvent e) {
            hyperbolicLayoutSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
            // added to set the lens size to 20
            if (e.getStateChange() == ItemEvent.SELECTED) {
                MutableTransformer mt = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT);
                ((LensTransformer) mt).setViewRadius(20);
            }
        }
    });