Java中mxGraph如何将图形居中显示在画布中央?
mxGraph 图形内容居中到视图中央的正确实现
你用setCenterPage(true)没效果是因为这个方法仅用于控制打印时页面内容是否居中,和视图中的实时显示无关。要把整个图形画布的内容居中到视图中央,需要通过计算图形的整体边界,再让视图滚动到该边界的中心位置,具体实现如下:
实现步骤与代码示例
- 获取图形实例,计算所有内容的整体边界
- 使用
scrollRectToVisible方法将边界居中显示
mxGraphComponent comp = ...; // 你的mxGraph组件实例 mxGraph graph = comp.getGraph(); // 获取当前所有可见单元格的整体边界 mxRectangle graphBounds = graph.getGraphBounds(); // 若需要包含折叠状态的子图,改用以下方式获取边界: // Object[] allCells = graph.getChildVertices(graph.getDefaultParent()); // mxRectangle graphBounds = graph.getBoundingBox(allCells); // 将图形边界居中显示在视图中,第二个参数true表示强制居中 comp.scrollRectToVisible(graphBounds, true);
关键说明
getGraphBounds():仅计算当前展开状态下可见的单元格边界,适合大多数场景getBoundingBox(allCells):会计算所有子顶点(包括折叠的子图)的边界,适合需要包含全部内容的场景scrollRectToVisible(rect, true):第二个参数设为true时,会自动将目标矩形居中显示在视图区域内,和你之前用的scrollCellToVisible逻辑一致,只是作用对象从单个单元格变成了整个图形的边界
内容的提问来源于stack exchange,提问作者Hervé Girod
相关产品推荐
相关产品推荐

