连着两个项目使用mxGraph来集成画流程图的功能,被这个东西折腾的够呛。
突然又遇到mxGraph相关的问题,搞了一上午没解决掉,突然找到解决方法,记录一下过程。
背景
项目中集成了mxGraph,可以把项目中的一些代表步骤的 activity 通过 拖拽 或者 点击 的方法添加进mxGraph的画布中(项目中的activity => mxGraph中的mxCell)。
如下图:左边是项目中的工具栏,右边是mxGraph的画布
问题
添加 -> 选中 -> 删除失败 -> 点击画布 -> 选中 -> 删除成功
新建mxGraph工程,从项目的工具栏中添加一个 activity(mxCell) 到 mxGraph的画布中,此时通过delete键或者退格键删除这个新添加的mxCell,发现删除事件并没有被触发。此时点击一下画布,重新选中该mxCell,按delete键或者退格键, 删除成功。
过程
这个现象可以看出,如果在添加后想办法自动点击一下画布应该就可以解决问题,于是就用各种办法去实现用代码对画布容器的点击,但是均以失败告终。
一上午时间过去了…
换个思路,这个过程也像是 画布失去焦点 -> 删除失败 -> 获得焦点 -> 删除成功。
失去焦点,获取焦点,焦点 焦点 焦点 焦焦焦!!!!
突然想到项目代码中有一句这样的代码

本文记录了在使用mxGraph时遇到的一个问题:新添加的mxCell无法直接删除,需要先点击画布才能删除。经过研究发现,问题在于mxGraph画布失去焦点导致删除事件未触发。解决方案是通过让画布获取焦点来解决此问题,通过添加特定代码使新添加的mxCell能够立即被删除,从而加深了对mxGraph的理解。
最低0.47元/天 解锁文章
1153





