後 創建基本的圖形用戶界面 和 動畫引擎, 通過對模型的鼠標事件納入引入互動的基礎知識.
該技術將產生你用鼠標交互事件或發生的每一次. 本次活動將通過我們的軟件模塊中的一個被捕獲, 處理並產生一些動作.
第一步是了解這些事件是如何產生和, 後來, 加入更多複雜的動作. 現在它足以確定所發生的事件的類型,以及我們所作出的屏幕上的位置.
該 事件驅動編程 是一個 編程範式 在這兩種結構和方案的實施是由該系統中發生的事件來確定, 用戶定義的,或者它們會導致.
為了解事件驅動編程, 我們反對它究竟是不是: 而在順序編程 (在 結構化) 是誰定義會有怎樣的程序流程的程序員, 在事件驅動編程將是用戶自己或任何被驅動程序,使程序流程. 雖然順序編程可以有一個外部機構介入程序, 當程序員已經確定這些干預發生, 而不是在任何時間,可能是事件驅動編程的情況下。(該)
實現事件監聽器接口
我們將在一個單一的事件類圖形庫實現系統的最初沒有複雜的模型. 我們會做的第一件事就是更改負責維護數據庫的類的聲明和繪製圖形對象: “黑板”. 指示標記 “器物” 這個類是能聽鼠標.
公共類 黑板 擴展 帆布 器物 鼠標監聽{
新的界面,要求我們到一個新的呼叫添加到JAVA庫找到實現此接口的文件. 我們會做的關鍵字 “進口”.
進口 java.awt.event.MouseListener;
將需要實現的接口中定義的方法, 以及之類的 “鼠標事件” 被作為參數傳遞給這些方法. 現在乾脆宣布不添加任何功能.
公共無效 mouseClicked(鼠標事件為arg0) { // TODO自動生成方法存根 } 公共無效 mouseEntered(鼠標事件為arg0) { // TODO自動生成方法存根 } 公共無效 mouseExited(鼠標事件為arg0) { // TODO自動生成方法存根 } 公共無效 mousePressed(鼠標事件為arg0) { // TODO自動生成方法存根 } 公共無效 mouseReleased(鼠標事件為arg0) { // TODO自動生成方法存根 }
活動報名
鼠標事件發生時,我們將隨時登記. 在類的構造函數或在start方法將加入通話 “addMouseListener將” 以表明我們要添加的監聽器.
傳遞的參數是偵聽到鼠標的類的名稱. 在我們的例子中表明它是正在記錄時,發生該事件的提醒同一類. 這是與標籤進行 “這“.
公眾 黑板(){ 這.addMouseListener將(這); }
事件管理
定義了幾個變量將存儲在那裡鼠標按下屏幕上的位置的坐標
私人詮釋 lastx = 0; 私人詮釋 lasty = 0;
實現上述功能之一, 例如,可在每次按下鼠標按鈕的時間 “mouseClicked”. 現在,我們將保持剛剛按下的位置的坐標, 雖然我們可以並發附加功能程序.
這些坐標在被傳遞給函數的對象或給定的事件, 物體 “鼠標事件”
公共無效 mouseClicked(鼠標事件為arg0) { lastx = arg0.getX(); lasty = arg0.getX(); }
修改負責圖形顯示上畫來畫的東西在哪裡鼠標按下的位置的方法. 這是最簡單的實現,讓我們來驗證圖形已經捕獲並處理的鼠標事件.
公共無效 paintOffScreen(圖形克){ 枚舉枚舉= bd.elements(); 對象ob; 而(enum.hasMoreElements()){ OB = enum.nextElement(); 如果(OB的instanceof SimpleDrawable){ ((SimpleDrawable) 是否).油漆(克); } } paintMousePosition(克); }
該功能是負責這 “paintMousePosition”, 它的實現是用圖形寫鼠標的位置的所存儲的坐標, 由函數 “抽繩”.
私人無效 paintMousePosition(圖形克) { g.DrawString的("("+lastx ","+lasty ")", lastx, lasty); }
一定是 連接的 發表評論.