2016-02-26 19 views
0

我試圖顯示兩個表查看器和它們之間的按鈕。當試圖通過 實現TableViewer來顯示水平和垂直滾動條時,我無法看到TableViewer,只能看到ScrolledComposite。我甚至嘗試在ScrolledComposite內部創建一個複合材料,並使用該複合材料來顯示TableViewer,但仍看不到TableViewer。有人能指引我走向正確的方向嗎?無法在滾動複合內顯示TableViewer

@Override 
protected Control createDialogArea(Composite parent) { 
    GridData gridData = new GridData(SWT.NONE, SWT.FILL, true, true); 
    gridData.heightHint = 500; 
    gridData.widthHint = 700; 
    Composite parentComposite = new Composite(parent, SWT.NONE); 
    parentComposite.setLayout(new GridLayout(3, true)); 
    parentComposite.setLayoutData(gridData); 
    ScrolledComposite scrolledComposite_1 = new ScrolledComposite(parentComposite, SWT.H_SCROLL|SWT.V_SCROLL); 
    scrolledComposite_1.setLayout(new GridLayout(1,false)); 
    gridData = new GridData(SWT.NONE, SWT.FILL, true, true); 
    gridData.heightHint = 200; 
    gridData.widthHint = 400; 
    scrolledComposite_1.setLayoutData(gridData); 
    scrolledComposite_1.setAlwaysShowScrollBars(true); 
    TableViewer tableViewer1 = new TableViewer(scrolledComposite_1, SWT.BORDER | SWT.SINGLE); 
    tableViewer1.getTable().setHeaderVisible(true); 
    tableViewer1.getTable().setLayout(new GridLayout(1,false)); 
    tableViewer1.getTable().setLayoutData(new GridData(200,400)); 
    createButtonComposite(parentComposite,SWT.NONE); 
    ScrolledComposite scrolledComposite_2 = new ScrolledComposite(parentComposite, SWT.H_SCROLL|SWT.V_SCROLL); 
    scrolledComposite_2.setLayout(new GridLayout(1,false)); 
    gridData = new GridData(SWT.NONE, SWT.FILL, true, true); 
    gridData.heightHint = 200; 
    gridData.widthHint = 400; 
    scrolledComposite_2.setLayoutData(gridData); 
    scrolledComposite_2.setAlwaysShowScrollBars(true); 
    TableViewer tableViewer2= new TableViewer(scrolledComposite_2, SWT.BORDER | SWT.SINGLE); 
    tableViewer2.getTable().setHeaderVisible(true); 
    tableViewer2.getTable().setLayoutData(new GridData(200,400)); 
    getShell().setText("My Dialog"); 
    return parent; 
} 

回答

1

ScrolledComposite需要調用setContents告訴它的子控件,也需要改變其他設置。這工作:

scrolledComposite_1.setContent(tableViewer1.getTable()); 
scrolledComposite_1.setExpandVertical(true); 
scrolledComposite_1.setExpandHorizontal(true); 
scrolledComposite_1.setMinSize(tableViewer1.getTable().computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

(與同爲第二屆)

然而TableViewer可以顯示滾動條本身,所以你並不真正需要的ScrolledComposite可言:

Composite parentComposite = new Composite(parent, SWT.NONE); 
parentComposite.setLayout(new GridLayout(3, true)); 
parentComposite.setLayoutData(gridData); 

TableViewer tableViewer1 = new TableViewer(parentComposite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL); 
tableViewer1.getTable().setHeaderVisible(true); 
tableViewer1.getTable().setLayout(new GridLayout(1,false)); 
tableViewer1.getTable().setLayoutData(new GridData(200,400)); 

createButtonComposite(parentComposite,SWT.NONE); 

TableViewer tableViewer2= new TableViewer(parentComposite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL); 
tableViewer2.getTable().setHeaderVisible(true); 
tableViewer2.getTable().setLayoutData(new GridData(200,400)); 
+0

我能爲了實現我想要的佈局,但是現在我在TableViewer的SWT isnatead中使用ListViewer,有沒有什麼方法可以添加Click監聽器而不是DoubClickListener。 – Juseeth

+0

這應該是一個新問題。 –