如何获取mxCell的坐标?

时间:2017-06-29 11:28:57

标签: java graph jgrapht jgraphx jgraph

我需要得到我通过他的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。

我缺少什么?

1 个答案:

答案 0 :(得分:1)

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

基本上,您选择所有单元格,获取它们并迭代它们。由于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;
}

您还可以在致电cell.isVertex()之前检查getGeometry()是否为(mxCell),因为它在边缘上的实施方式不同。

编辑:按照您的方法,以下工作也适用于我。好像你需要额外的演员mxGraphModel graphModel = (mxGraphModel) graph.getModel(); return ((mxCell) graphModel.getCell(id)).getGeometry().getX();

public void onCreate(SQLiteDatabase db){
    this.db.execSQL(...)