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

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

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

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

  點(diǎn)擊查看:2015計(jì)算機(jī)等級考試二級Java入門教程第十四章匯總

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

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

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

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

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

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

  

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

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

  import java.util;

  class sketchModel extends observable

  {

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

  }

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

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

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

  為了把模式與它的視圖集成到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)用程序窗口、模式和視圖引用的新方法,這些方法的每個(gè)都可從能夠引用應(yīng)用程序的地方訪問。

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

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

  相關(guān)推薦:

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

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

  考試吧特別策劃:2015年計(jì)算機(jī)等級考試報(bào)考指南

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