點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程第十四章匯總
14.7 使用鼠標(biāo)繪圖
下面我們己經(jīng)使用程序的內(nèi)部數(shù)據(jù)繪制了幾何圖形。接下來我們耍用Sketcher程序在視圖中用鼠標(biāo)繪制一個(gè)幾何圖形,然后在模式中存儲(chǔ)繪制完成的幾何圖形。我們希望這個(gè)過程盡可能地自然,因此將實(shí)現(xiàn)一種技術(shù),它允許你通過按動(dòng)鼠標(biāo)左鍵(更準(zhǔn)確地說是按鍵1)進(jìn)行繪制。拖動(dòng)光標(biāo)繪制選定的幾何圖形類型,比如繪制一條直線,按下鼠標(biāo)按鍵的點(diǎn)將是直線的起始點(diǎn),釋放按鍵的點(diǎn)將是直線的終止點(diǎn)。
當(dāng)你按下鼠標(biāo)并拖動(dòng)它時(shí),將顯示一條直線。因此在拖動(dòng)鼠標(biāo)并且左鍵保持按下的整個(gè)時(shí)間內(nèi)將動(dòng)態(tài)地顯示直線。這個(gè)過程稱為橡皮筋式畫線法。
我們可以使用這種方認(rèn)繪制我們需要的4種幾何圖形。每種幾何圖形都由兩個(gè)點(diǎn)定義。即鼠標(biāo)按鍵被按下時(shí)的光標(biāo)位置和鼠標(biāo)按鍵彼釋放時(shí)的光標(biāo)位置(當(dāng)然,還有幾何圖形的顏色).這就意味著,幾何圖形的構(gòu)造函數(shù)將有三個(gè)參數(shù),兩個(gè)點(diǎn)和顏色。讓我們看看如何處理鼠標(biāo)事件來完成這項(xiàng)操作。
處理鼠標(biāo)事件
制操作都將利用鼠標(biāo)來完成,為了在處理鼠標(biāo)事件的方法內(nèi)建立圖元,必須實(shí)現(xiàn)這個(gè)處理操作。我們對(duì)來源于SketchView對(duì)象中的鼠標(biāo)事件感興趣,因?yàn)檫@是我們繪制幾何圖形的地方。讓視圖負(fù)責(zé)處理自己的事件,這其中除了與已存在的幾何圖形進(jìn)行交互外,還包括在繪圖過程中發(fā)生的事件。
交互地繪制一個(gè)幾何圖形,比紅直線,將涉及三種不同種類的鼠標(biāo)事件。下面我們總結(jié)一下它們是些什么事件,當(dāng)這些事件發(fā)生時(shí)我們需要做些什么。
我們實(shí)現(xiàn)了建立一個(gè)圖元所需要的三個(gè)方法。mousePressed()方法將光標(biāo)的位置存儲(chǔ)在MouseHandler類的Start成員中,當(dāng)你按下按鍵并拖動(dòng)鼠標(biāo)時(shí)將反復(fù)調(diào)用mouseDragged方法。mouseDragged方法利用當(dāng)前光標(biāo)的位置和在Start中保存的位置建立一個(gè)圖元,并在這個(gè)類的tempElement成員中存儲(chǔ)對(duì)該圖元的引用。當(dāng)調(diào)用mouseDragged時(shí),last成員用來存儲(chǔ)光標(biāo)位置。start和last都是Point類型,這是因?yàn)槲覀兊玫降墓鈽?biāo)位置就是這種類型,但是要記信Point是Point2D的子類,因此你總可以在必要的時(shí)候把Point引用轉(zhuǎn)換成Point2D.當(dāng)你釋放鼠標(biāo)按鍵時(shí),這個(gè)過程 結(jié)束,引發(fā)調(diào)用mouseReleased()方法。
MouseHandler類型的對(duì)象是視圖對(duì)象鼠標(biāo)事件的監(jiān)聽器,因此我們應(yīng)該把它放置在SketchView構(gòu)造函數(shù)中。把下列代碼添加到現(xiàn)有的代碼之后:
public SketchView(Sketcher theApp)
{
this.theApp = theApp;
MouseHandler handler = new MouseHandler(); // create the mouse listener
addMouseListener(handler); // Listen for button events
addMouseMotionListener(handler); // Listen for motion events
}
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |