国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在定制Eclipse SWT組件中實現MVC

2019-11-18 15:46:44
字體:
來源:轉載
供稿:網友

  Eclipse SWT(標準部件工具包)提供了豐富的 API 集來實現定制部件(widget)。在這篇文章中,作者簡要介紹了 MVC(模型-視圖-控制器)架構,以結構化查看器的形式解釋了 MVC 的當前實現,并介紹了一種使用定制 SWT 部件的實現。

  什么是 MVC?

  MVC 架構(或設計模式)是圖形用戶界面(GUI)的設計樣式,由三部分構成:模型、視圖和控制器。MVC 把表示層從數據解耦出來,也把表示從數據的操作解耦出來。

  實現 MVC 架構與其他類型的應用程序有所不同。主要的區別來自如何放置和實現業務邏輯或查看呈現邏輯。與典型的 Web 應用程序不同,在這類程序中,程序員必須設計和實現所有 MVC 組件,而 Eclipse 提供的 API 可以替您做大部分控制或呈現工作。所以,不能嚴格地把 Eclipse 的 MVC 實現與 Web 或其他應用程序類型的 MVC 進行比較。

  Eclipse JFace

  Eclipse JFace 用內容提供者和標簽提供者實現 MVC 架構。JFace API 包裝了標準(并非不重要的)部件,例如表和樹,并實現了結構化內容提供者和標簽提供者。可以根據部件類型實現不同的內容提供者。面向列表的查看器會實現結構化查看器,而內容則以結構化(列表的)方式映射到部件條目上。

  基類叫做 Viewer,它是結構化查看器的一個擴展。查看器充當部件容器。內容提供者以結構化的方式得到數據;類似地,標簽提供者獲得對應的標簽。JFace 查看器實現檢索該數據,設置對應的關聯,并用數據集更新用戶界面(UI)組件。它還執行選擇、過濾和排序。

  如何實現 JFace

  Eclipse View 和 Viewer 負責執行大部分 JFace 控制功能。Viewer 或者說 MVC 的視圖部分,也充當部件容器;這是表示組件。

  Eclipse View 實例化 Viewer、內容提供者和標簽提供者,并充當模型,容納值對象,并在 Viewer 中把它們設置為 inputElement。

  要創建 View,請用 createPartControl() 方法實例化 Viewer。清單 1 實例化一個默認的樹查看器;您也可以定制樹,并用樹對象作為參數,用構造函數實例化樹查看器。

  清單 1. ExampleView 的 CreatePartControl 方法

  public class ExampleView extends ViewPart   { ... public void createPartControl(Composite parent)   { // define a grid layout   GridLayout layout = new GridLayout();   layout.numColumns = 1;   layout.marginHeight = 0;   layout.marginWidth = 0; l  ayout.horizontalSpacing = 0;   layout.verticalSpacing = 1;   parent.setLayout(layout);   // create widgets createActionBar(parent);   createTree(parent);   // add context menu and listeners  viewer.addDoubleClickListener(this); viewer.addSelectionChangedListener(openAction);   // register viewer so actions respond to selection getSite().setSelectionPRovider(viewer);   hookContextMenu();   }  private void createTree(Composite parent)   {   viewer = new TreeViewer(parent, SWT.SINGLE  SWT.H_SCROLL  SWT.V_SCROLL  SWT.BORDER);  viewer.setContentProvider(new ExampleViewContentProvider()); viewer.setLabelProvider  (new ExampleViewLabelProvider());   viewer.setSorter(new ViewerSorter());   viewer.setInput(ModelManager.getExampleModel());   viewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));   } ... }   

  在另一個獨立類中實現 ContentProvider,它是一個對象,用適合查看器類型的接口向視圖提供數據。例如,您可以實現 IStrUCturedContentProvider 或 ITreeContentProvider 查看器。

  請在 ContentProvider 代碼中實現以下一個方法,把 ContentProvider 與 Viewer 相關聯:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 信宜市| 顺义区| 灌云县| 辽宁省| 会东县| 广昌县| 临汾市| 浪卡子县| 雷波县| 静宁县| 内黄县| 本溪| 定远县| 化州市| 兰州市| 神池县| 镇原县| 江津市| 余干县| 故城县| 丹东市| 镇平县| 淄博市| 甘谷县| 措勤县| 崇阳县| 曲阳县| 霍山县| 疏勒县| 梓潼县| 南华县| 佛坪县| 北票市| 西吉县| 涿鹿县| 九寨沟县| 宁国市| 保靖县| 开远市| 滨州市| 同仁县|