Feeling

              三人行,必有我師焉

             ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
            185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks
          自定義控件通常是從一個Composite或者Canvas繼承而來,但是缺省狀態下,這兩個控件都無法通過鍵盤的Tab鍵得到焦點。通過對SWT的debug,我發現要實現該事件,必須滿足一個必要條件:為自定義控件安裝一個KeyEvent的監聽器

          實際上我個人認為這出自于SWT的實現者自己的考慮,可能認為如果沒有KeyListener,也就意味著沒有Key的操作,那么也無需通知Travserse事件,Travserse事件的前提就是Key操作。但是在某些特定情況下我們不需要KeyListener,也可以模擬出KeyEvent的效果,比如通過TraverseListener的keyTraversed方法。總而言之,想通過鍵盤為某一個自定義控件獲取焦點,就老老實實的給控件加一個KeyListener吧。

          此處附加一些和Traverse相關的小知識:

          1、如何通過鍵盤的Tab鍵跳出 Multiple Style 的Text?
                  請使用 Ctrl+Tab 組合鍵。

          2、如何通過鍵盤操作讓上一個控件獲取焦點?
                  請使用 Shift+Tab 或者 Ctrl+Shift+Tab 組合鍵。

          3、Button 可以通過回車鍵和空格鍵激活。所以如果有些地方無法使用回車鍵(比如按鈕在Dialog中),可以考慮使用空格鍵。

          4、一些特殊的KeyCode:
                  回車鍵:SWT.KEYPAD_CR
                  小鍵盤的回車鍵:SWT.TRAVERSE_RETURN
                  方向鍵:SWT.ARROW_UP,SWT.ARROW_DOWN,SWT.ARROW_LEFT,SWT.ARROW_RIGHT
          posted on 2009-04-07 11:22 三人行,必有我師焉 閱讀(2259) 評論(2)  編輯  收藏

          評論

          # re: SWT中自定義控件Traverse實現的必要條件 2009-04-09 13:46 genjuro
          呵呵,就是這樣,javadoc里還是說得很明白的  回復  更多評論
            

          # re: SWT中自定義控件Traverse實現的必要條件[未登錄] 2009-05-27 08:54 wyl
          你還活著啊?呵呵
          項目做好人就消失了
          tnnd
            回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          GitHub |  開源中國社區 |  maven倉庫 |  文件格式轉換 
          主站蜘蛛池模板: 定西市| 浑源县| 清流县| 武胜县| 栾川县| 丰台区| 房产| 长垣县| 宁远县| 望谟县| 哈密市| 北安市| 东丰县| 济南市| 庄河市| 武胜县| 垦利县| 宿迁市| 扬州市| 高邑县| 军事| 利津县| 中阳县| 庆安县| 鲁甸县| 封丘县| 花莲县| 柯坪县| 北票市| 乃东县| 广宗县| 四子王旗| 衢州市| 开远市| 高州市| 黄龙县| 苗栗市| 瑞安市| 建阳市| 德安县| 武鸣县|