如何获取 mxCell 的坐标?

How to get coordinates of a mxCell?

我需要获取我通过他的 ID 找到的 mxCell 的坐标 (x,y),但是当我对其调用 getGeometry() 时,它给了我 null 并且在我得到 NullPointerException 之后。

private double getX(String node){
    mxCell cell = (mxCell) ((mxGraphModel)map.getGraph().getModel()).getCell(node);
    mxGeometry geo = cell.getGeometry();//this line give me the null value
    double x = geo.getX();//NullPointerException
    return x;
}

map 是包含所有图形的 mxGraphComponent。

我错过了什么?

我假设您的 String node 参数应该映射到单元格的 id

基本上,您 select 所有单元格,获取它们并迭代它们。由于 JGraph 中的几乎所有内容都是 Object,因此您需要一些转换。

private double getXForCell(String id) {
    double res = -1;
    graph.clearSelection();
    graph.selectAll();
    Object[] cells = graph.getSelectionCells();
    for (Object object : cells) {
        mxCell cell = (mxCell) object;
        if (id.equals(cell.getId())) {
            res = cell.getGeometry().getX();
        }
    }
    graph.clearSelection();
    return res;
}

您不妨在调用 getGeometry() 之前检查是否 cell.isVertex(),因为它在边上的实现方式不同。

编辑:遵循您的方法,以下方法也适用于我。好像你需要额外的演员表 (mxCell).

mxGraphModel graphModel = (mxGraphModel) graph.getModel();
return ((mxCell) graphModel.getCell(id)).getGeometry().getX();