Feeling

              三人行,必有我師焉

             ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
            185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks
          復雜布局的重用,比較容易實現的就是GridLayout,至于FormLayout,基本上如果相似度不是很大,很難重用。我們在實現很多Page的時候,優先考慮的都會是GridLayout。但GridLayout在界面元素改動較大的時候也擁有一些弊端,比之FormLayout要麻煩的多。

          當界面元素擁有上下文的時候,隨著其上下文的改變,要想界面元素按照新的上下文重新布局,總是讓人頭疼。因為首先能想到的方法就是隱藏掉不需要的元素,這樣會減少時間和代碼上的開銷。但是如果采用GridLayout布局的時候,一個Widget隱藏的時候,它仍然占用著界面空間,即使將它的hightHint和widthHint設置為0,依然不能解決問題,因為GridLayout通常設置了verticalSpacing和horizontalSpacing。

          現在想到的一個解決方案就是將界面元素重新洗牌。 界面元素的生成由Model里的各個元素來決定。界面的上下文都交由一個屬性控制層進行控制,它上承GUI界面,下接業務模型,屬于一個過渡的層次。該層可以裝飾業務模型,并附加上新的上下文,形成一個新的Model。根據這個新的Model,我們在界面上創造元素。如果Model僅僅只是值發生了變化,我們重新設置界面的值即可。如果Model發生了上下文的變化,比如不需要某個屬性了或者是增加一個屬性,我們就對整個界面進行重新洗牌,通過一個循環Dispose掉所有的Widget,然后根據新的上下文重新初始化界面元素,并進行賦值。由于MVC的分離,重新初始化界面是很容易的。對于不太復雜的Page,布局上的問題就可以迎刃而解,而且在時間上的開銷也不會體現得很明顯,至少并看不出顯示上的延遲。

          posted on 2006-06-16 13:54 三人行,必有我師焉 閱讀(592) 評論(2)  編輯  收藏

          評論

          # re: 關于界面布局的重新洗牌 2006-06-20 18:17 黃金時代已過
          用layoutData.exclude屬性可以重新布局。
          例如:想不顯示button1,

          button1.setVisible(false);
          GridData layoutData = (GridData)button1.getLayoutData();
          layoutData.exclude=true;
          button1.getParent().layout();
            回復  更多評論
            

          # re: 關于界面布局的重新洗牌 2006-07-07 16:28 八進制
          layoutData.exclude不錯,以前沒有注意到。  回復  更多評論
            


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


          網站導航:
           
          GitHub |  開源中國社區 |  maven倉庫 |  文件格式轉換 
          主站蜘蛛池模板: 平潭县| 刚察县| 牟定县| 大连市| 徐水县| 郸城县| 织金县| 和林格尔县| 长宁区| 七台河市| 桐柏县| 安顺市| 济源市| 宁德市| 柘城县| 枣阳市| 汝州市| 蛟河市| 黑河市| 奎屯市| 天门市| 南澳县| 漳平市| 定西市| 缙云县| 青河县| 安阳市| 高台县| 金寨县| 沙坪坝区| 溧水县| 始兴县| 贺兰县| 文登市| 合川市| 玉门市| 萨迦县| 略阳县| 青河县| 黄平县| 百色市|