如何获取 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();
我需要获取我通过他的 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();