Open Java Project

          Keep it simple, Stupid, Less is more

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            20 Posts :: 0 Stories :: 12 Comments :: 0 Trackbacks

          4、復雜控件

          (1)       ExpandableComposite

          l         Web頁面中一個通用的主題是具有收縮一部分頁面內容的能力

          l         Eclipse Form也提供了這樣一個控件:ExpandableComposite

          l         下面的代碼片斷是使用ExpandableComposite的一個例子:

                        ExpandableComposite ec = toolkit.createExpandableComposite(body,

                          ExpandableComposite.TREE_NODE

                                 | ExpandableComposite.CLIENT_INDENT);

                        ec.setText("Expandable Composite title");

                        String ctext = "We will now create a somewhat long text so that "

                          + "we can use it as content for the expandable composite. "

                          + "Expandable composite is used to hide or show the text using the "

                          + "toggle control";

                        Label client = toolkit.createLabel(ec, ctext, SWT.WRAP);

                        ec.setClient(client);

                        td = new TableWrapData();

                        td.colspan = 2;

                        ec.setLayoutData(td);

                        ec.addExpansionListener(new ExpansionAdapter() {

                          public void expansionStateChanged(ExpansionEvent e) {

                                 form.reflow(true);

                          }

                        });

          l         這個控件有很多風格,TREE_NODE使得該控件具有樹型節點的展開、收縮功能;而TWISTIE使得控件具有三角箭頭風格

          l         EXPANDED使得初始展開顯示

          l         CLIENT_INDENT使得Client內容縮進對齊

          l         ExpandableComposite呈現為激活控件和標題,而可以展開、收縮的內容稱為Client

          l         Client必須是可展開的composite(上例是Label控件)

          l         最后需要添加Expansion監聽器在狀態變化時,reflow Form(即根據控件的新的大小重新定位和更新滾動條)

          l         下面是上例的運行結果:

          o_ExpandableComposite.jpg


          2)Section

          l         Eclipse Form中最常用的定制控件就是Section(在PDE中到處可見)

          l         Section擴展ExpandableComposite,但具有下面的新特性:

          n         在標題下面有一個分隔控件

          n         在分隔控件下面可以有一個描述文本

          l         下面的代碼片斷是使用Section的一個例子,代碼和ExpandableComposite沒有太大差別,這里是用了TWISTIE風格:

                        Section section = toolkit.createSection(body, Section.DESCRIPTION

                                 | Section.TWISTIE | Section.EXPANDED);

                        td = new TableWrapData(TableWrapData.FILL);

                        td.colspan = 2;

                        section.setLayoutData(td);

                        section.addExpansionListener(new ExpansionAdapter() {

                          public void expansionStateChanged(ExpansionEvent e) {

                                 form.reflow(true);

                          }

                        });

                        section.setText("Section title");

                        toolkit.createCompositeSeparator(section);

                        section

                                 .setDescription("This is the description that goes below the title");

                        Composite sectionClient = toolkit.createComposite(section);

                        sectionClient.setLayout(new GridLayout());

                        button = toolkit.createButton(sectionClient, "Radio 1", SWT.RADIO);

                        button = toolkit.createButton(sectionClient, "Radio 2", SWT.RADIO);

                        section.setClient(sectionClient);

          l         下面是上例的運行結果:

          r_Section.jpg

          posted on 2005-04-10 23:19 nelson_tu 閱讀(1797) 評論(0)  編輯  收藏 所屬分類: Eclipse開發
          主站蜘蛛池模板: 渭南市| 当阳市| 高要市| 韶关市| 四平市| 红安县| 班玛县| 德格县| 鞍山市| 泸水县| 汝州市| 长岛县| 贵溪市| 翁牛特旗| 平谷区| 吐鲁番市| 江门市| 新民市| 慈利县| 女性| 南部县| 石城县| 桃江县| 庄浪县| 靖江市| 密云县| 抚松县| 新乡县| 临高县| 昌吉市| 壶关县| 淮安市| 宜章县| 兴业县| 伊吾县| 丰宁| 彭山县| 封丘县| 灵寿县| 合作市| 泽库县|