nighty

          折騰的年華
          posts - 37, comments - 143, trackbacks - 0, articles - 0

          為SWT文本控件添加彈出式內(nèi)容輔助

          Posted on 2007-11-02 17:28 寒武紀(jì) 閱讀(2401) 評(píng)論(5)  編輯  收藏 所屬分類(lèi): SWT/JFace

              通常情況下,用戶(hù)應(yīng)該在簡(jiǎn)單字段(例如文本字段或組合框)中提供文本信息。雖然用來(lái)填充這些字段的應(yīng)用程序代碼通常比用來(lái)填充復(fù)雜窗口小部件(例如表或樹(shù))的代碼簡(jiǎn)單得多,但這些“簡(jiǎn)單”字段通常會(huì)給用戶(hù)帶來(lái)更多負(fù)擔(dān)。用戶(hù)必須確定哪些字段需要內(nèi)容、某個(gè)字段是否包含有效內(nèi)容以及應(yīng)該選擇哪些選項(xiàng)。JFace 的字段輔助支持提供了一些類(lèi)來(lái)幫助指導(dǎo)用戶(hù)完成輸入任務(wù)。
              org.eclipse.jface.fieldassist包提供了二種方式的輔助。帶修飾字段支持允許您提供圖像修飾,以便向用戶(hù)提供有關(guān)特定字段狀態(tài)的提示。內(nèi)容建議支持允許您提供內(nèi)容輔助彈出窗口,以便向用戶(hù)提供內(nèi)容選項(xiàng)。
              下面了解一下關(guān)于內(nèi)容建議部分。
              一般的IDE工具都有內(nèi)容建議的功能,比如很常見(jiàn)的Java編輯器,輸入“.”之后就會(huì)激活一個(gè)窗口,從里面可以選擇方法或字段,這個(gè)功能可以快速高效地完成代碼,而且可以減少很多輸入錯(cuò)誤。jface的fieldassist提供了對(duì)這個(gè)功能的支持。
              我們做一個(gè)demo,先看一下這個(gè)demo的效果。
               
               當(dāng)按下Alt + '/'的時(shí)候,彈出內(nèi)容輔助的窗口。從中可以選擇相應(yīng)的建議,進(jìn)行快速輸入。
              下面是相應(yīng)的代碼,非常簡(jiǎn)單。
              

          sShell = new Shell();
                  sShell.setText(
          "Shell");
                  GridLayout gridLayout 
          = new GridLayout(1false);
                  sShell.setLayout(gridLayout);
                  sShell.setSize(
          new Point(300200));
                  
                  
          final Text t = new Text(sShell, SWT.BORDER | SWT.MULTI);
                  t.setLayoutData(
          new GridData(GridData.FILL_BOTH));
                  autoActivationCharacters 
          = new char[] '#''(' };
                  
          try {
                      keyStroke 
          = KeyStroke.getInstance("Alt+/");
                  }
           catch (ParseException e1) {
                      e1.printStackTrace();
                  }

                  ContentProposalAdapter adapter 
          = new ContentProposalAdapter(t,
                          
          new TextContentAdapter(), new SimpleContentProposalProvider(
                                  
          new String[] "建議1""建議2""建議3" }), keyStroke,
                          autoActivationCharacters);

              按照幫助文檔的描述如下:為了在用戶(hù)從彈出窗口中選擇建議時(shí)獲取和設(shè)置控件內(nèi)容,必須向適配器提供 IControlContentAdapter 實(shí)例,該實(shí)例可以檢索和設(shè)置特定類(lèi)型控件的內(nèi)容。對(duì)于文本字段來(lái)說(shuō),可以使用 TextContentAdapter 類(lèi)。但是,也可以靈活地實(shí)現(xiàn) IControlContentAdapter,以便將內(nèi)容建議適配器與任何其他類(lèi)型的控件配合使用。
              關(guān)鍵是定義ContentProposalAdapter類(lèi),它有幾個(gè)必須的參數(shù),第一個(gè)是需要進(jìn)行內(nèi)容輔助的控件,第二個(gè)是IControlContentAdapter 實(shí)例,jface默認(rèn)提供了二個(gè)實(shí)現(xiàn):ComboContentAdapter, TextContentAdapter。按照上面的建議,如果你需要更加高級(jí)的功能,那么得實(shí)現(xiàn)IControlContentAdapter第四個(gè)是IContentProposalProvider的實(shí)例,這是提供內(nèi)容輔助窗口中的內(nèi)容提供器的接口,jface只實(shí)現(xiàn)了一個(gè)SimpleContentProposalProvider,這是最簡(jiǎn)單的只提供文本內(nèi)容的內(nèi)容提供器。同樣的,你可以繼承IContentProposalProvider來(lái)實(shí)現(xiàn)更高級(jí)的功能。
              keyStroke是定義按下什么鍵時(shí)激活該提示。autoActivationCharacters是定義當(dāng)輸入遇到什么符號(hào)時(shí)會(huì)激活提示的字符數(shù)組。
             按照幫助文檔的說(shuō)明,可以在任意控件上安裝 ContentProposalAdapter 以提供此行為。需要什么樣的高級(jí)功能,就必須具體實(shí)踐一下以上幾個(gè)接口的實(shí)現(xiàn)。一般的編輯器都會(huì)配合SoucreViewer來(lái)提供這些功能。



          剛進(jìn)場(chǎng)的時(shí)候戲就落幕

          Feedback

          # re: 為SWT文本控件添加彈出式內(nèi)容輔助  回復(fù)  更多評(píng)論   

          2007-11-02 19:35 by 推薦java開(kāi)源項(xiàng)目介紹大全《敏捷之源 - agilesource.org》
          值得收藏。。。

          # re: 為SWT文本控件添加彈出式內(nèi)容輔助  回復(fù)  更多評(píng)論   

          2007-11-04 12:02 by BeanSoft
          收藏了!

          # re: 為SWT文本控件添加彈出式內(nèi)容輔助  回復(fù)  更多評(píng)論   

          2007-11-06 09:59 by lesliee
          非常感謝你的研究。

          # re: 為SWT文本控件添加彈出式內(nèi)容輔助  回復(fù)  更多評(píng)論   

          2008-01-14 16:05 by ihmyd
          非常棒!

          # re: 為SWT文本控件添加彈出式內(nèi)容輔助[未登錄](méi)  回復(fù)  更多評(píng)論   

          2009-09-27 11:39 by xx
          用鼠標(biāo)選中"建議1"時(shí),正常;但回車(chē)時(shí)"建議1"后面怎么還有以前輸入的字符???

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 清原| 宝坻区| 沙洋县| 宜黄县| 尚义县| 阳新县| 云龙县| 梅河口市| 佛山市| 丹巴县| 江永县| 潜江市| 临澧县| 巴彦淖尔市| 蒙山县| 海盐县| 开原市| 北宁市| 兴仁县| 嵊泗县| 大渡口区| 九江县| 云林县| 天台县| 枣阳市| 太白县| 石林| 上犹县| 什邡市| 册亨县| 六枝特区| 泽库县| 班戈县| 手游| 天气| 北宁市| 额敏县| 陆川县| 蛟河市| 墨玉县| 大邑县|