东西学得杂乱无章..没有一个可以深入的..很无奈,更无奈的是这东西基本没有文档..没办法工作要用到..也好,看看大牛们怎么在web里实际应用<图论>的.
mxgraph的第一天,加油..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript" src="../mxGraph-1.7.1.6.debug.js"></script> </head> <body> <div id="ct" style="overflow:hidden;width:321px;height:241px;background:url('editors/images/grid.gif');cursor:default;"></div> </body> <script type="text/javascript"> (function main(container) { if(!mxClient.isBrowserSupported()) { alert('1'); } else { //container承装graph的容器 //graph相当于画布 var graph = new mxGraph(container); graph.setHtmlLabels(true); var keyHandler = new mxKeyHandler(graph); //辅助方法,得到鼠标事件选定的是哪个value var getFieldnameFormEvent = function(cell, evt) { if (evt != null) { //将鼠标相对于游览器视口的坐标转换为相对于graph容器的坐标 var point = mxUtils.convertPoint(graph.container, evt.clientX, evt.clientY) var state = graph.getView().getState(cell); if (state != null) { //减去cell的x,y point.x -= state.x; point.y -= state.y; //鼠标事件发生在大于cell高度一半的地方,选定第二个值 if (point.y > state.height / 2) { return 'second'; } } } return 'first'; }; //@Override graph.getLabel = function(cell) { var table = document.createElement('table'); table.style.height = '100%'; table.style.width = '100%'; var body = document.createElement('tbody'); var tr1 = document.createElement('tr'); var td1 = document.createElement('td'); td1.style.fontSize = '12px'; //写入 mxUtils.write(td1, cell.value.first); var tr2 = document.createElement('tr'); var td2 = document.createElement('td'); td2.style.fontSize = '12px'; mxUtils.write(td2, cell.value.second); tr1.appendChild(td1); tr2.appendChild(td2); body.appendChild(tr1); body.appendChild(tr2); table.appendChild(body); return table; }; //@Override graph.getEditingValue = function(cell, evt) { evt.fieldname = getFieldnameFormEvent(cell, evt); return cell.value[evt.fieldname] || ''; }; //@Override graph.labelChanged = function(cell, newValue, trigger) { var name = (trigger != null) ? trigger.fieldname : null; if (name != null) { //不要再原值上修改 var value = mxUtils.clone(cell.value); value[name] = newValue; newValue = value; mxGraph.prototype.labelChanged.apply(this, arguments); } }; var value = { first: '第一个值', second: '第二个值' }; var parent = graph.getDefaultParent(); graph.getModel().beginUpdate(); try { //插入一个顶点 var v1 = graph.insertVertex(parent, null, value, 100, 60, 120, 80, 'overflow=fill;'); } finally { //更新视图 graph.getModel().endUpdate(); } } })(document.getElementById('ct')); </script> </html>