首頁 - 網(wǎng)校 - 萬題庫 - 直播 - 雄鷹網(wǎng)校 - 團購 - 書城 - ? - 學(xué)習(xí)通 - 導(dǎo)航 -
首頁網(wǎng)校萬題庫直播雄鷹網(wǎng)校團購書城?論壇實用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn)
專升本
自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點日語
職稱英語
口譯筆譯
申碩英語
零起點韓語
商務(wù)英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點英語
托福考試
托業(yè)考試
零起點法語
雅思考試
成人英語三級
零起點德語
等級考試
華為認證
水平考試
Java認證
職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報 關(guān) 員
外 銷 員
價格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護士
會計從業(yè)資格
基金從業(yè)資格
統(tǒng)計從業(yè)資格
經(jīng)濟師
精算師
統(tǒng)計師
會計職稱
法律顧問
ACCA考試
初級會計職稱
資產(chǎn)評估師
高級經(jīng)濟師
注冊會計師
高級會計師
美國注冊會計師
審計師考試
國際內(nèi)審師
注冊稅務(wù)師
理財規(guī)劃師
一級建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
注冊給排水
造價員考試
注冊計量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價
土地估價師
安全評價師
房地產(chǎn)經(jīng)紀人
投資項目管理師
環(huán)境影響評價師
土地登記代理人
寶寶起名
繽紛校園
實用文檔
入黨申請
英語學(xué)習(xí)
思想?yún)R報
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂
您現(xiàn)在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > JAVA > 復(fù)習(xí)資料 > 正文

2015計算機等級考試二級Java入門教程第十四章(1)

考試吧整理了“2015計算機等級考試二級Java入門教程”,望給備考2015年計算機等級考試的考生帶來幫助!

  點擊查看:2015計算機等級考試二級Java入門教程章節(jié)匯總

  點擊查看:2015計算機等級考試二級Java入門教程第十四章匯總

  14.1 使用模式/視圖技術(shù)

  在我們開始繪制一個草圖之前需要提出一個概念,這就是在Sktche程序中將增加打算如何管理一張草圖的數(shù)據(jù),因為這會影響處理事件的位置和方式。我們已經(jīng)定義了一個應(yīng)用程序窗口類Sketcher,但是這個類并不是存儲草圖基本數(shù)據(jù)的最佳地方。有的時候我們希望把草圖保存在一個文件中,串行化是最簡單的實現(xiàn)方式。如果我們打算使用串行化存儲一張草圖,那么在實現(xiàn)SketchFrame類時就不必把所有的東西與建立Sketch的有關(guān)數(shù)據(jù)混在一起。另外,如果我們從GUI定義中分離出定義草圖的基本數(shù)據(jù),就會使程序更容易實現(xiàn)。這又回到了我們在第11章中提到的MVC技術(shù),它被應(yīng)用于Swing組件額度定義中。

  理論上,我們應(yīng)該為此目的特別地設(shè)計一個類來管理草圖數(shù)據(jù),這個類就是草圖模式。

  表示模式類中數(shù)據(jù)的視圖類(viem)將顯示草圖并處理用戶交互,因此,這個類將組合瀏覽功能和草圖的控制器。通常,GUI的建立和操作并不特別指定在SketchFrame類中我們將要處理的視圖。這不僅是我們在Sketcher程序中實現(xiàn)操作的方法,而且也是一種很好的途徑。

  模式對象將包含構(gòu)成草圖文本和圖形的混合體。我們將調(diào)用模式類SketchModel及描述這個模式的視圖類SketchView,但在下一章,我們才把視圖加到程序中。下面的示意圖將說明在Sketcher中類之間的關(guān)系。

  應(yīng)用程序?qū)ο髮⑷尕撠?zé)管理程序中所包含的各種對象之間的連接。只要應(yīng)用程序類擁有使每個對象都可用的方法,任何可訪問應(yīng)用程序?qū)ο蟮膶ο蠖伎梢耘c任何其他的對象進行通信,因此應(yīng)用程序扮演了一個對象之間通信的通道角色。

  

  注意,SketchFrame不是視圖類,它只定義應(yīng)用程序窗口和與之關(guān)聯(lián)的GUI組件。當(dāng)我們在下一章中創(chuàng)建SketchView對象時,將把SketchView對象插入到SketschFrame對象的內(nèi)容窗格中,并使用布局管理器來管理內(nèi)容窗格。由于視圖類的定泛獨立于應(yīng)用程序類。所以我們從菜單中分離出了草圖視圖和用來與應(yīng)用程序進行交互的其他組件。這樣做的好處是顯不文檔的區(qū)域可以獨立于應(yīng)用程序窗口而擁有自己的坐標系統(tǒng)。

  為了在Sketcher中實現(xiàn)模式/視圖結(jié)構(gòu),我們需要為模式和視圖定義相應(yīng)的類,至少是一個框架。包含定義草圖數(shù)據(jù)的類可以定義成這種結(jié)構(gòu)形式:

  import java.util;

  class sketchModel extends observable

  {

  //Detail of the rest of class to be filled in later...

  }

  顯然在這個類中會有很多操作要做,我們將在以后逐漸將它們添加進來。由于這個類擴展了()Observable類,所以可以利用它把視圖類注冊為一個觀察器,并自動地通告所有的發(fā)生變化的視圖。在有多個視圖時,這個工具將得到視圖自己的內(nèi)容。

  我們可以把視圖類定義為派生于JComponent的組件。這樣將會內(nèi)置組件操作的所有方法,若需要的話,可以重載其中的任何一個方法。視圖類也需要實現(xiàn)fObjectveru接口以便可以用模式對它進行注冊。這是一個框架:

  import javax.swing.*;

  import java.util,*; //For observer

  calss sketchview extends JComponent

  implements Observer

  {

  public SketchView(Skctcher theApp)

  {

  this.theApp=theApp;

  }

  //Method called by Observable object when it changes

  public void update(Observable o,object rectangle)

  {

  //code to respond to changes in the model...

  }

  private Sketcher theApp; //The application object

  }

  為了顯示模式的內(nèi)容,視圖肯定需要對它進行訪問,因此構(gòu)造函數(shù)要有一個自變量負責(zé)把應(yīng)用程序?qū)ο髠鬟f給它。由于在視圖中存儲的是應(yīng)用程序?qū)ο,而不是模式的引用,并且添加到?yīng)用程序?qū)ο笾械囊粋方法可返回模式的引用,所以我們可以讓視圖對象獨立于模式對象。如果模式表示了一個完全不同的對象,比如加載了一個新文件。我們并不需要改變視圖對象,只要新模式把視圖注冊為觀察器,視圖就會在發(fā)生變化的模式通告時自動地重畫草圖。

  為了把模式與它的視圖集成到Sketcher應(yīng)用程序中,我們需要為Stetcher類增加一些代碼:

  import java.awt.*;

  import java.awt.event.*;

  import java.util.*;

  public class Sketcher

  {

  public static void main(String[] args)

  {

  theApp = new Sketcher(); // Create the application object

  theApp.init(); // ... and initialize it

  }

  public void init()

  {

  window = new SketchFrame("Sketcher", this); // Create the app window

  Toolkit theKit = window.getToolkit(); // Get the window toolkit

  Dimension wndSize = theKit.getScreenSize(); // Get screen size

  // Set the position to screen center & size to 2/3 screen size

  window.setBounds(wndSize.width/6, wndSize.height/6, // Position

  2*wndSize.width/3, 2*wndSize.height/3); // Size

  window.addWindowListener(new WindowHandler()); // Add window listener

  sketch = new SketchModel(); // Create the model

  view = new SketchView(this); // Create the view

  sketch.addObserver((Observer)view); // Register the view with the model

  window.getContentPane().add(view, BorderLayout.CENTER);

  window.setVisible(true);

  }

  // Return a reference to the application window

  public SketchFrame getWindow()

  {

  return window;

  }

  // Return a reference to the model

  public SketchModel getModel()

  {

  return sketch;

  }

  // Return a reference to the view

  public SketchView getView()

  {

  return view;

  }

  // Handler class for window events

  class WindowHandler extends WindowAdapter

  {

  // Handler for window closing event

  public void windowClosing(WindowEvent e)

  {

  window.dispose(); // Release the window resources

  System.exit(0); // End the application

  }

  }

  private SketchModel sketch; // The data model for the sketch

  private SketchView view; // The view of the sketch

  private static SketchFrame window; // The application window

  private static Sketcher theApp; // The application object

  }

  SketchFrame構(gòu)造函數(shù)需要做如下修改:

  public SketchFrame(String title, Sketcher theApp)

  {

  setTitle(title); // Set the window title

  this.theApp = theApp;

  // Rest of the constractor as before…

  }

  需要在SketchFrarme類中增加theApp變量。

  private Stretcher theApp.s

  在Sketcher類中有些返回應(yīng)用程序窗口、模式和視圖引用的新方法,這些方法的每個都可從能夠引用應(yīng)用程序的地方訪問。

  建立了模式和視圖對象之后,我們把視圖注冊為模式的觀察器這樣使模式發(fā)生變化時能夠通知給視圖。然后,我們將View添加到Window對象的內(nèi)容窗格中,這是主應(yīng)用程序窗口。由于內(nèi)容窗格的BorderLayout管理器把它加到了中心,所以view將占據(jù)窗格中其余的所有空間。

  現(xiàn)在,我們粗略地知道了前進的方向,讓我們上路,繼續(xù)前進。

  相關(guān)推薦:

  2015計算機等級考試二級Java入門教程章節(jié)匯總

  2014計算機二級Java程序設(shè)計真題及答案(網(wǎng)友版)

  考試吧特別策劃:2015年計算機等級考試報考指南

文章搜索
計算機等級考試欄目導(dǎo)航
版權(quán)聲明:如果計算機等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。
Copyright © 2004- 考試吧計算機等級考試網(wǎng) All Rights Reserved 
中國科學(xué)院研究生院權(quán)威支持(北京)
在線模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧