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倉庫 |  文件格式轉換 
          主站蜘蛛池模板: 化隆| 襄汾县| 靖西县| 古浪县| 金平| 望都县| 梓潼县| 阿克陶县| 霍邱县| 四川省| 西和县| 敦化市| 南丰县| 卢湾区| 闽清县| 土默特右旗| 尼勒克县| 定州市| 尉犁县| 咸丰县| 洪湖市| 汾西县| 天峻县| 莱州市| 西城区| 金堂县| 南宫市| 米林县| 金湖县| 奎屯市| 抚松县| 云龙县| 香港| 罗山县| 依兰县| 东乡县| 奉节县| 嘉黎县| 临沧市| 思茅市| 班戈县|