麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

在定制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 相關聯:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑人一级片视频 | 久久伊 | 精品一区二区在线观看 | 91精品免费在线 | 国产一区二区三区视频免费 | 亚洲成人在线视频网 | 毛片大全 | 久久小视频 | 久久精品电影网 | 黄色网址电影 | 二区三区四区视频 | 中文欧美日韩 | 成人午夜一区二区 | 久久久久久久一区二区三区 | 最新久久免费视频 | 欧美精品99 | 天天骑夜夜操 | 国产精品www | 又黄又爽免费无遮挡在线观看 | 欧美视频网 | 国产精品观看在线亚洲人成网 | 天堂成人一区二区三区 | 黄色羞羞| 亚洲视屏在线观看 | 欧美日韩国产综合网 | 91精品国产乱码久久久久久久久 | 一级在线观看视频 | 蜜桃一本色道久久综合亚洲精品冫 | av在线免费播放网站 | 91亚洲精品一区二区福利 | 日韩午夜片 | 国产精品刺激对白麻豆99 | 亚洲欧美日韩免费 | 婷婷久久影院 | 国产又粗又爽又深的免费视频 | 91在线视频精品 | 国产精品区一区二区三区 | 一区二区三区四区视频在线观看 | 日日操夜夜透 | 他也色在线视频 | 日韩精品一二三 |