我正在开发一个 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
我可以摆脱填充 - 但这并没有改变任何东西。
为什么不能在边缘创建新节点的任何想法?
提前致谢!