安徽新华电脑专修学院_安徽电脑培训_安徽电脑培训学校_合肥电脑培训

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > GEF學習筆記

GEF學習筆記
2010-01-14 23:12:17  作者:  來源:
GEF以前學習過, 而且還按照Dudu的教程做了一遍, 在網上也找了不少資料, 不錯的文章也轉載了不少,只不過當時對插件開發還只是一知半解, 對圖形開發更是沒有什么概念,導致的直接后果就是:現在基本上全部忘記光了,于是不得不從頭開始,不過這次不僅要知其然, 而且還要知其所以然, 不過理解起來還是比較快的, 不知是拖以前學習的底子的福, 還是因為這么長時間做Eclipse開發來的基礎


在理想的情況下,命令應當只知道模型。因此應當盡量避免對EditPart和圖形的引用。

圖形(Figure)不應該去訪問EditPart和Model, 即使Figure要引用EditPart, EditPart也只是作為一個Listner來被應用,而不是直接去引用一個EditPart

一個Model實例會對應一個EditPart, 因為EditPart會隨著Model的存在而存在, 而model隨時可能被刪除, 所以在EditPart中應盡量少包含一些長效信息,而且應該避免Command去引用EditPart

EditPart的refreshVisuals()方法只會在其初始化的時候被自動調用,如果model發生變化,需要更新圖形界面時,必須手動調用refreshVisuals()方法.

連接(connection)是通過source和target連接點來獲取的, 而且connection的EditPart只會創建一次, connection也是一種圖形,它必須通過ConnectionAnchor掛在另外兩個圖形上面,因此必須告訴connection它所需要的兩個anchor在哪里, 默認情況GEF會通過給連接圖形的EditPart實現NodeEditPart接口來提供所需要的anchor, 這樣做一個是因為anchor是與連接圖形關聯的,而連接在開始的時候是不知道anchor在哪里的, 另一個原因是, 當用戶創建一個connnection的時候, Connection EditPart還沒有被創建

EditPart通過監聽器來獲得模型的修改,并提供方法去刷新視圖, 比如子節點被刪除,將調用refreshChildren()方法去刪除子節點對應的圖形和EditPart, 如果只是屬性發生變化,那么將調用refreshVisuals()方法, 因為該方法會頻繁調用,因此在調用前應該做一些判斷來避免不必要的刷新

一般在active()方法中添加listener, deactive()中刪掉這些添加的listener,

在EditPart中, 由圖形修改導致模型修改是通過command來實現, 而模型修改導致圖形修改則是通過listener來實現

EditPart是GEF的核心, 對于一個可編輯的模型元素都必須有一個對應的EditPart類對應, 在EditPart中有兩個容易混淆的方法:getModelChildren()返回包含在當前模型中的子模型, getChildren()返回子模型對應的EditPart

如果父圖形不是子圖形的直接父親, 那么需要實現AbstractGraphicalEditPart.getContentPane()方法, 得到的對象將用來存放所有的子圖形

當用戶在圖形編輯器中執行操作的時候, GEF在內部會創建相應的Request, 比如新建一個對象將生成CreateRequest, 它包含了新建對象的模型實例, 用來存放該Request的EditPart

對于我們的EditPolicy實現來說, 我們要做的大部分工作就是根據request創建一個Comamnd對象, Command子類一般要實現execute和undo方法,execute方法就是用來將圖形的改變更新到模型上, Command更多的是對模型的依賴, 而跟GEF其他的組件沒有什么關系, 比如絕對不會去引用EditPart和EditPolicy實例

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 数据采集卡_北京科尔特兴业测控技术研究所 | 立式离心泵_不锈钢自吸泵_液下泵_变频无负压供水设备-大东海泵业无锡有限公司 | 耐腐蚀磁力泵,直立式耐酸碱泵,立式耐酸碱泵,自吸式耐酸碱泵-杰凯泵业【官网】 | 四川杨氏达防水材料有限公司| 临沂网站建设,临沂网站制作,临沂网络公司,临沂小程序开发,临沂网站设计,沂水网站建设,沂南网站建设,蒙阴网站建设,平邑网站建设,费县网站建设,兰陵网站建设,郯城网站建设,临沭网站建设,莒南网站建设,兰山网络公司 | 扭力扳手_扭力扳手检定仪_数显扭力扳手_扭力测试仪_测力计_推拉力计_拉力测试仪_测试台架-上海实干实业有限公司 | 制冷加热循环机,密闭高低温一体机,优质密闭低温冷冻机-无锡冠亚恒温制冷技术有限公司 | 全降解塑料厂家_淋膜_秸秆_手机壳_气泡袋_牙刷牙线_GRS可回收包装材料-东莞全球环保科技有限公司 | 全自动烫金机-全自动移印机-全自动丝印机-全自动平面机-东莞联昌实业供应各种丝印机和移印机 | 威海木箱,威海木托盘,威海免熏蒸包装箱-威海耀晟木制品有限公司 威海华东数控股份有限公司 | 深圳奥力特化工产品有限公司企业网站 | 一体化污水处理设备-生活废水处理设备-山东瑞信环保 | 气动法兰软密封蝶阀-电动高温通风蝶阀-气动开关球阀-川沪阀门 | 行星式球磨机-实验室球磨仪[东方天净]小型高能研磨筛分仪直销厂家 | 注塑模具厂,注塑模具加工,塑胶模具加工-东莞世邦塑胶官网 | 山东自保温砌块_泰安自保温砌块厂家_山东润德新型建材有限公司【网站】 | 五凌汽配-轮胎螺丝|中心螺丝|小螺丝|轮胎螺栓|扭力杆螺丝|高强度紧固件|螺丝螺母|汽车配件 | 透明捆扎带_束带机打包带_束带机纸带_热封纸带机_上海得亿束带机包装材料有限公司 | 江苏广分检测技术有限公司、电力安全工具检测、苏州绝缘工具检测、昆山电力安全工具检测-广分检测技术(苏州)有限公司 | 七评-爱美儿信息科技有限公司〖官网〗?| 长春试验机-长春凯新试验仪器_试验机研发生产 专注试验机_首页 | 耐磨螺旋叶片_耐磨螺旋绞龙_KNM螺旋耐磨材料-北京耐默 | 银泰洁净--净化工程总承包,20年精耕细作,专为净化而来_银泰洁净--净化工程总承包,20年精耕细作,专为净化而来 | 乌鲁木齐万疆通管道设备有限公司 销售热线;13565955557-新疆 乌鲁木齐 万疆通 管道设备 波纹补偿器 膨胀节 金属软管 伸缩器 管件 阀门 维修 | 无塔供水设备_无负压供水设备_变频供水设备_净化过滤设备_加油站油罐_S/F双层油罐_开封市东方供水设备有限公司 | 品牌T恤零售/批发厂商/供应商_男女式T恤生产/设计-圣达信T恤 | 今日北斗 | 北斗最新动态| 郑州建网站,郑州做网站,郑州网站建设,郑州网站制作,郑州高端定制网站,郑州APP开发 | 泰安led显示屏-泰安户外裸眼3D显示屏-扩声系统-舞台灯光机械-电子屏-肥城宁阳新泰东平-泰安市奇美特电子有限公司 | 金属剪切机,金属打包机,废钢剪切机,废铁压块机,金属压块机,废纸打包机,重废龙门剪,废钢龙门剪,箱式剪,液压剪切机-瑞顿机械装备制造江阴有限公司 | 深圳市大业激光成型技术有限公司| 汽油发电机,柴油发电机,小型汽油发电机,小型柴油发电机,家用发电机生产厂家——上海东明动力设备有限公司 | 立式/卧式/潜水/液下/螺杆/耐磨/渣浆泵|泥浆泵|离心泵,厂家 - 河北聚盛泵业制造有限公司 | 友信京泰-操作台-调度台-控制台-监控台定制厂家 | 仪器校准_校验_计量检测_校正_检定严选博罗第三方法定计量所 | 水电站泵站LCU控制屏_发电机保护_变压器保护_逆功率保护_防孤岛保护装置_ 电力微机保护网 | 山东发电机组生产厂家,特种火花塞生产厂家,高压线生产厂家,空气滤芯生产厂家,济南市博盛动力机械有限公司 | 蒸汽孔板流量计-法兰式孔板流量计-一体化标准孔板流量计-金湖中原仪表有限公司 | 威海赶海网、乳山特产、威海专营海产品、威海旅游产品 - 威海赶海电子商务 | 上饶建盛建设,建盛建设,上饶市建盛建设工程质量检测有限公司-房屋鉴定 | 手持电能质量测量仪-TD-1168多功能高空接线钳-上海妙定电气有限公司 |