2

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

这基本上是可行的,但是在靠近边缘的地方添加节点ViewPanel会产生缩小图形的视觉效果。最初的几次点击也以某种方式改变了相机的中心和/或缩放。

我遵循了库文档的“在 GUI 线程中工作”部分。因此我没有使用.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我可以摆脱填充 - 但这并没有改变任何东西。

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

提前致谢!

4

0 回答 0