gpt4 book ai didi

java - 如何获取 mxCell 的坐标?

转载 作者:行者123 更新时间:2023-11-30 06:38:29 25 4
gpt4 key购买 nike

我需要获取通过其 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

基本上,您选择所有单元格,获取它们并迭代它们。由于 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() 是否存在,因为它在边缘上的实现方式不同。

编辑:按照你的方法,以下内容也适合我。看来您需要额外的 Actor (mxCell)

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

关于java - 如何获取 mxCell 的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44823886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com