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