HelloWorld 善戰(zhàn)者,求之于勢(shì),不責(zé)于人;故能擇人而任勢(shì)。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁(yè) ::  :: 聯(lián)系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評(píng)論 :: 0 Trackbacks

          Java快捷鍵制作

          用過(guò)VB的知道按下F5是運(yùn)行窗體,用過(guò)Photoshop的知道按下Tab是隱藏所有面板,你的Java程序也想有這個(gè)功能么?那么希望這篇文章對(duì)您有所幫助。

          子菜單類(lèi)JMenuItem有一個(gè)方法不知道你注意過(guò)沒(méi)有:setAccelerator。

          打開(kāi)幫助文件對(duì)這個(gè)方法的描述是: 設(shè)置組合鍵,它能直接調(diào)用菜單項(xiàng)的操作偵聽(tīng)器而不必顯示菜單的層次結(jié)構(gòu)。所以用這個(gè)方法就能制作我們所要的快捷鍵了。

          幫助文件告訴我們,傳給setAccelerator方法所要的是一個(gè)KeyStroke,下面來(lái)說(shuō)說(shuō)這個(gè)類(lèi):

          KeyStoke在Javax.swing包下,他的作用將我們要的鍵"捆"起來(lái),再傳給上面所說(shuō)的setAccelerator之類(lèi)的方法來(lái)使用,KeyStoke類(lèi)提供了幾個(gè)"捆"鍵的靜態(tài)重載方法,下面說(shuō)幾個(gè)例子,你們自己去試試吧:

          F5: KeyStroke.getKeyStroke(KeyEvent.F5, 0);

          Ctrl+Q: KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK);

          a:KeyStroke. getKeyStroke('a');

          Alt+Shift+C:getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true);

          當(dāng)然,如果你不想引入一些如KeyEvent或InputEvent類(lèi)的話(huà),那么你就可以用KeyStroke.getKeyStroke(String s)方法來(lái)簡(jiǎn)化他:

          F5:KeyStroke.getKeyStroke("F5");

          Ctrl+Q:KeyStroke.getKeyStroke("control Q ");

          a:KeyStroke.getKeyStroke( "typed a" );

          Alt+Shift+C:getKeyStroke("alt shift released X ");

          如為子菜單"打開(kāi)"(名為:meuOpen)加入快捷鍵Ctrl+O:

          meuOpen.setAccelerator(KeyStroke.getKeyStroke("control O"));

          上面說(shuō)的是子菜單的快捷鍵設(shè)置,現(xiàn)在說(shuō)下其它控件的快捷鍵設(shè)置:

          把開(kāi)幫助文件,進(jìn)入 javax.swing.AbstractButton ,你可以找到setMnemonic (int mnemonic),這就是AbstractButton子類(lèi)設(shè)置快捷鍵的方法了,如一個(gè)按鈕btn,設(shè)置快捷鍵為:btn.setMnemonic (KeyEvent.A),則它的快捷方式為Alt+A,它有一個(gè)修飾方法  setDisplayedMnemonicIndex (int index),作用是設(shè)置標(biāo)題的第幾個(gè)字符加個(gè)下劃線(xiàn)來(lái)標(biāo)識(shí)快捷鍵,如btn.setText("Open");btn.setDisplayedMnemonicIndex(0),則btn的標(biāo)題變?yōu)?span style="text-decoration: underline">Open。

          聰明的你們突類(lèi)旁通吧,一定可以成功的。不過(guò)要注意以下幾點(diǎn)

          1、在使用KeyStroke的getKeyStroke(String s)方法時(shí)應(yīng)該注意用法如Ctrl用control表示,Alt用alt來(lái)表示,如果加上字母則要用大寫(xiě),但只有一個(gè)鍵如a時(shí),應(yīng)該用小寫(xiě):"type a"。

          2、KeyStroke的getKeyStroke(String s)方法是方便,但如果使用不合法的語(yǔ)法是達(dá)不到目的的,這時(shí)你可以試試KeyStroke的其它靜態(tài)方法。

          3、AbstractButton的子類(lèi)的快捷鍵用setMnemonic方法來(lái)設(shè)置只能有Alt+指定的鍵。



          </script>

          posted on 2008-03-07 13:38 helloworld2008 閱讀(1104) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): java

          評(píng)論

          # re: Java快捷鍵制作(轉(zhuǎn) http://www.17zixue8.com/htm/biancheng/java/JavaSkill/0001.htm ) 2010-12-26 12:31 KLF HIJ
          BU JASF

            回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 略阳县| 称多县| 敖汉旗| 突泉县| 祁连县| 诏安县| 日照市| 金塔县| 建湖县| 新蔡县| 南阳市| 治县。| 乐山市| 忻城县| 内江市| 罗田县| 颍上县| 吕梁市| 贞丰县| 大冶市| 万安县| 彰化市| 秭归县| 手机| 昌乐县| 乡宁县| 龙门县| 白沙| 黎川县| 潞西市| 吉林市| 时尚| 宝清县| 那坡县| 延安市| 体育| 正蓝旗| 崇明县| 文登市| 浦江县| 宁化县|