我有一個窗體,在窗體的一部分中,我在工具欄上有一個動作。 運行該操作應導致在具有動態列和行的表單中繪製swt表。SWT以表格的形式動態地繪製表格
問題是,我設法做到這一點的唯一方法是最初創建一個空表,然後將表句柄傳遞給稍後將填滿它的動作。
如果我有操作代碼來繪製表格,窗體不會展開(滾動)來顯示整個表格。
有沒有辦法在不創建初始表的情況下實現我想要的?
我已經採用了複合的代碼是這樣的: 爲了創建的形式構造的複合:
gd = new GridData();
gd.widthHint = 400;
gd.heightHint = 200;
tableComposite = new Composite(this.client, SWT.None);
tableComposite.setLayoutData(gd);
在操作的代碼:
GridData gd = new GridData();
gd.widthHint = 400;
gd.heightHint = 200;
if (this.viewer != null) {
this.viewer.getTable().setRedraw(false);
while (this.viewer.getTable().getColumnCount() > 0) {
this.viewer.getTable().getColumns()[0].dispose();
}
this.viewer.getTable().dispose();
this.viewer = null;
}
this.viewer = new TableViewer(composite, SWT.BORDER
| SWT.FULL_SELECTION);
this.viewer.setContentProvider(new FeatureContentProvider());
this.viewer.setLabelProvider(new FeatureLabelProvider());
this.viewer.getTable().setLayoutData(gd);
this.viewer.getTable().setHeaderVisible(true);
this.viewer.getTable().redraw();
this.viewer.refresh();
List<String> columnNames = getColumnNamesForTable();
for (String name : columnNames) {
TableColumn c = new TableColumn(this.viewer.getTable(), SWT.NONE);
c.setText(name);
c.setWidth(100);
}
this.viewer.getTable().redraw();
this.viewer.refresh();
this.viewer.setInput(iterations);
this.composite.layout(true, true);
當複合材料參數從傳遞行動代碼中的表單。該表似乎被分配和複合空間,但沒有顯示。
我試過這種方法我創建了一個複合的形式: tableComposite = new Composite(parentComposite,SWT.None); 和我把tableComposite傳遞給動作。 動作代碼是這樣的: this.viewer = new TableViewer(composite,SWT.BORDER | SWT.FULL_SELECTION); this.viewer.setContentProvider(new FeatureContentProvider()); \t \t this.viewer.setLabelProvider(new FeatureLabelProvider()); \t \t this.viewer.getTable()。setLayoutData(gd); \t \t this.viewer.getTable()。setHeaderVisible(true); \t \t this.viewer.getTable()。redraw(); \t \t this.viewer.refresh(); thic.composite.layout(true,true) 但是仍然沒有顯示... – user847988
請在您的問題中發佈代碼,它會更具可讀性。另外,我想你忘了把佈局設置爲'tableComposite' – Baldrick
好了,我編輯了這個問題。 – user847988