2012-02-23 52 views
1

我創建了一個包含許多行的表。當我運行它時,它將在一個大窗口中顯示所有行。我應該如何限制顯示在表格中的行數,並使用垂直滾動條來查看其他行。如何啓用日食表中的滾動條

我試着在表上調用setBounds和setSize。但它仍然在一個大窗口中顯示所有行。

 Display display = new Display(); 
     Shell shell = new Shell(display); 
     shell.setLayout(new GridLayout(1, true)); 
     Table table = new Table(shell, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER); 
     table.setBounds(0, 0, 100, 100); 
     for (int i=0; i<4; i++) { 
      TableColumn column = new TableColumn (table, SWT.NONE); 
      column.setText ("Column " + i); 
     } 
     for(int i = 0; i < table.getColumnCount(); i++) { 
      table.getColumn(i).setWidth(150); 
     } 
     for(int i = 0; i < 50; i++){ 
      TableItem item = new TableItem(table,SWT.NONE); 
      item.setText(new String[]{"Item " + i,"Item " + i,"Item " + i,"Item " + i}); 
     } 
     shell.pack(); 
     shell.open(); 
     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) 
      display.sleep(); 
     } 
     display.dispose(); 

回答

1
Table table = new Table(shell, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER); 
table.setLayoutData(GridDataFactory.swtDefault().hint(100, 100).create()); 

,因爲它是Composite的包含設置表的位置和尺寸表中的佈局,則不能設置表格的尺寸與setBounds()。請看以下鏈接,瞭解有關SWT佈局的有用信息:http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html

+0

是否可以使用griddata方法執行此操作。類似table.setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,true)) – vjk 2012-02-23 17:02:12

+0

@vjk你可以創建'new GridData()',用heightInt和widthInt指定高度和寬度,將它附加到'Table'中。這相當於我的答案('GridDataFactory'允許我在一行中完成)。 – Baldrick 2012-02-23 18:02:21

+0

感謝有關swt佈局的有用鏈接 – 2017-07-25 10:18:19