java_mxGraph实现个别cell标签不显示

当使用graph的insertVertex或者其他添加cell的方法时,设置该cell的标签(label)不显示,除了graph的设置全局标签不显示,当我使用cellState中setLabel方法或者setlabelbound方法都可实现不显示标签,但是在添加cell后设置,界面依然会显示,如何解决在添加时就实现不显示标签,这是什么原因引起的

如果您想在添加 cell 时就实现不显示标签,可以在调用 insertVertex 或其他添加 cell 的方法时,通过设置 mxStyle 来实现。具体来说,您可以为 mxStyle 中的 label 属性设置一个空字符串,以实现不显示标签。

例如,下面的代码演示了如何使用 mxStyle 来设置一个不显示标签的 cell:

// 创建一个空的mxCell
mxCell cell = new mxCell();

// 设置mxStyle,将label属性设置为空字符串
Map<String, Object> style = new HashMap<String, Object>();
style.put(mxConstants.STYLE_LABEL, "");
cell.setStyle(mxUtils.setStyle(null, style));

// 将cell插入到graph中
graph.getModel().beginUpdate();
try {
    graph.addCell(cell);
} finally {
    graph.getModel().endUpdate();
}


另外,当您使用 mxCellState.setLabel 或 mxCellState.setLabelBounds 方法来设置 cell 标签时,可能无法立即生效,因为 mxCellState 中的属性是用于绘制图形的,而不是用于更改 cell 数据的。如果您想立即更新 cell 的标签,可以使用 mxGraph.refresh 方法来强制刷新绘图。例如:

mxCell cell = new mxCell("My Label");
graph.getModel().beginUpdate();
try {
    graph.addCell(cell);
} finally {
    graph.getModel().endUpdate();
}

// 将cell的标签设置为空字符串
cell.setValue("");
mxCellState state = graph.getView().getState(cell);
if (state != null) {
    // 强制刷新绘图,以更新cell的标签
    graph.refresh();
}