網(wǎng)站建設(shè)核心之動作處理

2022-08-20    分類: 網(wǎng)站建設(shè)

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

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

網(wǎng)頁題目:網(wǎng)站建設(shè)核心之動作處理
文章分享:http://www.muchs.cn/news13/191663.html

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

廣告

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

成都定制網(wǎng)站網(wǎng)頁設(shè)計