任何編程開發(fā)語言接觸過了或多或少都會有一套自己的經(jīng)驗,今天小編為大家提供jgraph開發(fā)技巧,讓新人們少走點彎路。下面一起來學(xué)習(xí)下jgraph開發(fā)技巧吧!
jgraph的畫圖機制
參照了JGraph的example和源代碼,發(fā)現(xiàn):
JGraph將圖元定義為一個一個的cell,每個cell可以是一個頂點(Vertex)、邊(Edge)或者節(jié)點(Port)中的一種。頂點可以有鄰接的頂點,他們通過邊相聯(lián)系,邊聯(lián)接的兩個端點稱為目標(biāo)和源,每個目標(biāo)或者源是一個節(jié)點。節(jié)點是頂點的孩子。每個cell都可以有自己的孩子。
每個cell的外觀由相應(yīng)的屬性定義,屬性序列是指一系列的鍵-值對,他們以Map形式組織,例如:
//定義Edge的外觀
Map map = new Hashtable();
GraphConstants.setLineEnd(map, GraphConstants.ARROW_CLASSIC);
GraphConstants.setEndFill(map, true);
GraphConstants.setLabelAlongEdge(map, true);
getAttributes().applyMap(map);
而“畫布”(類JGraph,不妨如此理解吧)也可以有自己的外觀屬性。例如:
//定義畫布的屬性
setBackground(Color.decode("#C0C0C0"));
setEditable(false);
setCloneable(false);
setInvokesStopCellEditing(true);
setJumpToDefaultPort(true);
setPortsVisible(false);
setGridEnabled(false);
setGridVisible(false);
setGridMode(JGraph.CROSS_GRID_MODE);
setGridColor(Color.decode("#808080"));
setGridSize(10);
jgraph的擴展
JGraph只是提供單純的圖形繪制功能,不包含實際的數(shù)據(jù),所以要想辦法把自己的數(shù)據(jù)“加”進去才行,這恐怕就得考慮擴展JGraph了。
頂點(Vertex)對應(yīng)的類為org.jgraph.graph.DefaultGraphCell
邊(Edge)對應(yīng)的類為org.jgraph.graph.DefaultEdge
節(jié)點(Port)對應(yīng)的類為org.jgraph.graph.DefaultPort
我們要做的,僅僅是分別繼承相應(yīng)的類,并把自己的數(shù)據(jù)對象放進去而已。當(dāng)然,還可以改變相應(yīng)的外觀屬性。不過如果你對繪圖事件也感興趣的話(呵呵,十有八九應(yīng)該有用的),還要留意一下org.jgraph.graph.BasicMarqueeHandler和org.jgraph.graph.GraphUndoManager這兩個類呢。BasicMarqueeHandler中包括了在畫布上點擊鼠標(biāo)、增加連線、合并等等事件的處理,而GraphUndoManager則主管撤銷、回復(fù)事件
如果仔細操作,你也許回發(fā)現(xiàn),點擊邊(Edge)的端點進行移動的事件并不由GraphUndoManager來處理,這時候就要再關(guān)注一個類了:org.jgraph.graph.EdgeView.EdgeHandle,這是一個內(nèi)部類,如果需要的話,自己重寫一個類繼承它吧。
新聞熱點
疑難解答
圖片精選