nighty

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

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

          Posted on 2007-11-02 17:28 寒武紀 閱讀(2401) 評論(5)  編輯  收藏 所屬分類: SWT/JFace

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

          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);

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



          剛進場的時候戲就落幕

          Feedback

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

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

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

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

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

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

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

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

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

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

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 沛县| 曲松县| 芮城县| 嵊泗县| 双江| 东至县| 新余市| 民县| 伊吾县| 沙雅县| 康定县| 松潘县| 寻乌县| 通榆县| 阿合奇县| 遵义市| 商城县| 泊头市| 贵德县| 明光市| 拜城县| 五大连池市| 尼玛县| 遂平县| 永和县| 通许县| 孙吴县| 靖州| 阿鲁科尔沁旗| 铁力市| 恩平市| 襄樊市| 沅陵县| 江北区| 自治县| 砚山县| 黄石市| 建湖县| 伊通| 从江县| 师宗县|