2010-09-20 37 views
3

我有一個View類(擴展爲ViewPart),其中包含從FormToolkit創建的ScrolledForm。當某些事件發生在應用程序的其他視圖中時,我想在此視圖中更改表單並將其實時更新至用戶。如何從Eclipse RCP應用程序中的代碼更新視圖

我有屬性更改的支持,現在支持,並增加在查看

public void propertyChange(PropertyChangeEvent event) { 
    form.dispose(); 
    toolkit.dispose(); 
    createForm(event); 
    form.redraw(); 
} 

其中createForm(event)重新創建基於事件的形式,下面的方法。

問題是在此之後UI不顯示新窗體。我知道表單已經創建好了,因爲如果我拖動視圖和其他視圖之間的邊界來調整它的大小,那麼視圖會立即更新以顯示新的表單。我如何以編程方式強制刷新UI中的視圖?

回答

5

你試過了嗎:form.reflow(true);

這將重新計算表單的佈局。

如果此操作失敗,請嘗試調用xxx.layout(true)其中'xxx'是SWT Composite的變量mame,它是表單實例的父級。我假設表格是在您的createForm(event)方法中針對其父組合創建的?

+1

謝謝!你的假設對父母是正確的。單獨調用reflow無效,但調用父級的佈局(true)已解決此問題。 – Alb 2010-09-22 14:49:53

相關問題