国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 也說關于WizardPage的動態生成

也說關于WizardPage的動態生成
2010-01-14 23:03:42  作者:  來源:
  在Eclipse中一個Wizard=WizardDialog+Wizard+WizardPage,在這三者中,可以把前者看成后者的容器(container),看看這些類里面的代碼就知道,Eclipse自己也是這么認為的,而我們最終看到的東西是WizardPage,在一個Wizard中雖然我們看到的是每一個WizardPage都是在點擊next的時候一個一個顯示的,但是他們的創建卻是在Wizard初始化的時候一起被實例化的,因此這個給我們制造聯動效果的WizardPage(也就是后一個WizardPage的內容是根據前面的WizardPage的操作動態生成的)造成了麻煩,不過這個問題也很好解決,這里(http://www.cnblogs.com/bjzhanghao/archive/2007/06/07/775314.html)已經給出了答案.即復寫Wizard的createPageControls()方法,給一個空實現即可.
        不過還有另外一個問題沒有解決,就是如果我現在一個Wizard中有a,b兩個WizardPage,目前我停留在b WizardPage中,我現在點擊back回到a WizardPage中,然后對內容做了修改,此次我希望再回到b WizardPage的時候,里面的內容也同時跟著發生改變,但是僅僅是復寫Wizard的createPageControls()方法是無法實現,我們通過查看源代碼,發現在org.eclipse.jface.wizard.WizardDialog.updateForPage(IWizardPage page)中:
java 代碼
 
  1. private void updateForPage(IWizardPage page) {   
  2.  // ensure this page belongs to the current wizard   
  3.  if (wizard != page.getWizard()) {   
  4.    setWizard(page.getWizard());   
  5.   }   
  6.  // ensure that page control has been created   
  7.  // (this allows lazy page control creation)   
  8.  if (page.getControl() == null) {   
  9.      page.createControl(pageContainer);   
  10.      // the page is responsible for ensuring the created control is accessable   
  11.      // via getControl.   
  12.      Assert.isNotNull(page.getControl());   
  13.      // ensure the dialog is large enough for this page   
  14.      updateSize(page);   
  15.  }   
  16.  // make the new page visible   
  17.  IWizardPage oldPage = currentPage;   
  18.  currentPage = page;   
  19.  currentPage.setVisible(true);   
  20.  if (oldPage != null) {   
  21.    oldPage.setVisible(false);   
  22.   }   
  23.  // update the dialog controls   
  24.  update();   
  25. }   


 

          也就是在調用WizardPage的createControl()方法之前要做一個判斷page.getControl() == null,因此我們只要將想辦法在調轉到某個WizardPage的時候,將其control設置為null就可以了.于是我們在a WizardPage中引起b WizardPage的內容發生改變的方法中添加如下代碼:

java 代碼

 

 
  1. // 對參數頁必須重繪   
  2.  IWizardPage page = getNextPage();   
  3.  if (page.getControl() != null)   
  4.   page.dispose();   

          然后復寫b WizardPage的dispose方法:
 

java 代碼
 
  1. public void dispose() {   
  2.  super.dispose();   
  3.     
  4.  setControl(null);   
  5. }   

          這樣我們就大功告成了.


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 欧美视频一区二区在线 | 国产一区二区视频观看 | 国产91精品入口福利 | 精品在线一区二区三区 | 中文字幕在线观看视频免费 | 网站国产 | 亚洲综合免费 | 国产精无久久久久久久免费 | 成人福利在线观看 | 中文字幕第一页亚洲 | 日韩特级黄色片 | 欧美中文字幕一区二区 | 一级特黄60分钟免费观看 | 国产精品亚洲二区在线观看 | 免费不卡av | 2021最新热播中文字幕-第1页-看片视频 2022精品国偷自产免费观看 | 久久蜜桃资源一区二区老牛 | 91精品国产美女在线观看 | 黄色高潮视频 | 色播在线播放 | 国产成人在线免费观看视频 | 精品成人在线观看 | 精品久久av| 成人三级a做爰视频哪里看 成人三级电影网 | 青草久久久久 | 国产香蕉在线观看 | 日本一区二区网站 | 91精品国产高清一区二区性色 | 国产毛片毛片毛片毛片毛片 | 免费av网站观看 | 黄色在线观看视频网站 | 另类天堂网不卡另类系列 | 老色鬼视频77777av | 免费亚洲成人 | 狠狠操五月天 | 中国一级特黄真人毛片 | 国产黄视频网站 | 国产欧美精品一区二区三区四区 | 色视频在线 | 毛片免费网站 | 成人国产午夜在线观看 |