如何在点击时将光标位置的节点添加到GraphStream图形?

时间:2017-05-17 22:21:45

标签: java swing graph click graphstream

我正在开发一个Java Swing应用程序,以使用GraphStream显示图形。 单击图形组件(ViewPanel)时,节点应出现在发生单击的位置。

这基本上有效但ViewPanel边缘附近添加节点会产生缩小图形的视觉效果。 此外,前几次点击之一以某种方式改变了相机的中心和/或缩放。

我按照" 在GUI线程中工作"图书馆的documentation。 因此,我没有使用ViewerListener

为了确保布局不是自动的,我使用:

viewer.disableAutoLayout();
view.getCamera().setAutoFitView(false);
view.getCamera().setViewCenter(0, 0, 0);
view.getCamera().setViewPercent(1);

鼠标事件的处理如下:

view.addMouseListener(new MouseListener() {
    public void mouseClicked(MouseEvent e) {
        Point3 gu = view.getCamera().transformPxToGu(e.getX(), e.getY());
        Node node = graph.addNode(e.getWhen());
        node.setAttribute("xyz", gu.x, gu.y, 0);
        // System.out.println("camera: " + view.getCamera());
    }
});

打印相机对象显示有30px的填充。 我认为填充会导致问题(如果填充区域中添加了某些内容,强制填充可能会缩小图形似乎是合理的)。 通过创建DefaultCamera类的子类,我可以摆脱填充 - 但这并没有改变任何东西。

为什么不能在边缘创建新节点的任何想法?

提前致谢!

0 个答案:

没有答案