網站建設核心之動作處理

2022-08-20    分類: 網站建設

通常,激活一個命令可以有多種方式,用戶可以通過菜單、擊鍵或工具欄上的按鈕選擇特定的功能。在AWT事件模型中實現(xiàn)這些非常容易:將所有事件 連接到同一個監(jiān)聽器上。例如:假設blueAction是一個動作監(jiān)聽器,它的actionPerformed方法可以將背景顏色改變成藍色。將一個監(jiān)聽 器對象加到下面幾個事件源上:

·標記為Blue的工具欄按鈕
·標記為Blue的菜單項
·擊鍵CTRL+B
然后,無論改變背景顏色的命令是通過哪種方式下達的,是點擊按鈕、菜單選擇,還是按下鍵盤,其操作動作都是一樣的。
Swing包提供了一種非常實用的機制來封裝命令,并將它們連接到多個事件源,這就是Action接口。一個動作是一個封裝下列內容的對象:
·命令的說明(一個文本字符串和一個可選圖標);
執(zhí)行命令所需要的參數(shù)(例如,在列舉的例子中請求改變的顏色)。
一個方法是ActionListener接口中很熟悉的一個:實際上,Action接口擴展于ActionListener接口,因此,可以在任何需要ActionListener對象的地方使用Action對象。
接下來的兩個方法允許啟用或禁用這個動作,并檢查這個動作當前是否啟用。當一個連接到菜單或工具欄上的動作被禁用時,這個選項就會變成灰色。
putValue和getvalue方法允許存儲和檢索動作對象中的任意名/值。有兩個重要的預定義字符串:Action.NAME和Action.sMALLjcON,用于將動作的名字和圖標存儲到一個動作對象中。
如果動作對象添加到菜單或工具欄上,它的名稱和圖標就會被自動地提取出來,并顯示在菜單項或工具欄中。SHORT_DESCRiRTION值變成了工具提示。
Action接口的最后兩個方法能夠讓其他對象在動作對象的屬性發(fā)生變化時得到通告,尤其是菜單或工具欄處罰的動作。例如,如果增加一個菜單,作為動作 對象的屬性變更監(jiān)聽器,而這個動作對象隨后被禁用,菜單就會被調用,并將動作名稱變?yōu)榛疑?。屬性變更監(jiān)聽器是一種常用的構造形式,它是JavaBeans 組件模型的一部分。
需要注意,Action一個接口,而不是一個類。實現(xiàn)這個接口的所有類都必須實 現(xiàn)剛才討論的7個方法。慶幸的是,有一個類實現(xiàn)了這個接口除actionPerformed方法之外的所有方法,它就是AbstractAction個類 存儲了所有名/值對,并管理著屬性變更監(jiān)聽器。我們可以直接擴展AbstractAction類,并在擴展類中實現(xiàn)actionPerformed方法。
構造器讀取動作的名稱和圖標,為工具提示設置簡要說明,將工作設置為監(jiān)聽器。
最后,想要將這個動作對象添加到擊鍵中,以便讓用戶敲擊鍵盤命令來執(zhí)行這項動作。為了將動作與擊鍵關聯(lián)起來,首先需要生成KeyStroke類對象。這 是一個很有用的類,它封裝了對鍵的說明。要想生成一個Keystroke對象不要調用構造器,而是調用KeyStroke類中的靜態(tài) getKeyStroke方法:
為了能夠理解下一個步驟,需要知道keyboardfocus的概 念。用戶界面中可以包含許多按鈕、菜單、滾動欄以及其他的組件。當用戶敲擊鍵盤時,這個動作會被發(fā)送給擁有焦點的組件。通常具有焦點的組件可以明顯地察覺 到(但并不總是這樣),例如,在Java觀感中,具有焦點的按鈕在按鈕文本周圍有一個細的矩形邊框。用戶可以使用TAB鍵在組件之間移動焦點。當按下 SPACE鍵時,就點擊了擁有焦點的按鈕。還有一些鍵執(zhí)行一些其他的動作,例如,按下箭頭鍵可以移動滾動條。
然而,在這里的示例中,并不希望將擊鍵發(fā)送給擁有焦點的組件。否則,每個按鈕都需要知道如何處理CTRL+Y、CTRL+B和CTRL+R這些組合鍵。
這是一個常見的問題,Swing設計者給出了一種很便捷的解決方案。每個JComponent有三個輸入映射(imput maps),每一個映射的KeyStroke對象都與動作關聯(lián)。

網頁題目:網站建設核心之動作處理
文章分享:http://www.bm7419.com/news13/191663.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化微信小程序、云服務器、App開發(fā)、微信公眾號品牌網站設計

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網站網頁設計