You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中mxGraph如何将图形居中显示在画布中央?

mxGraph 图形内容居中到视图中央的正确实现

你用setCenterPage(true)没效果是因为这个方法仅用于控制打印时页面内容是否居中,和视图中的实时显示无关。要把整个图形画布的内容居中到视图中央,需要通过计算图形的整体边界,再让视图滚动到该边界的中心位置,具体实现如下:

实现步骤与代码示例

  1. 获取图形实例,计算所有内容的整体边界
  2. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:52:04