2016-10-05 6 views
0

Я создал tableViewer, который содержит таблицу с двумя столбцами. Дело в том, что два столбца не заполняют всю область таблицы, и я хочу создать два столбца с одинаковыми пропорциями, чтобы заполнить его.Как я могу заставить столбцы заполнить всю таблицу?

Код:

TableViewer viewer = new TableViewer(createProjectConfig, SWT.MULTI | SWT.H_SCROLL| SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); 
TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE); 
TableViewerColumn viewerColumn1 = new TableViewerColumn(viewer, SWT.NONE); 

Table createVariablesTable = viewer.getTable(); 
createVariablesTable.setLayoutData(new FormData()); 
createVariablesTable.setHeaderVisible(true); 
createVariablesTable.setLinesVisible(true); 

FormData createVariablesTableData = new FormData(); 
createVariablesTableData.left = new FormAttachment(selectProjectPathLabel, 0, SWT.LEFT); 
createVariablesTableData.top = new FormAttachment(selectProjectPathLabel, 40, SWT.TOP); 
createVariablesTableData.right = new FormAttachment(selectProjectPathButton,0,SWT.RIGHT); 
createVariablesTableData.bottom = new FormAttachment(createProjectConfigButton,-10,SWT.TOP); 
createVariablesTable.setLayoutData(createVariablesTableData); 

TableColumn column = viewerColumn.getColumn(); 
column.setText("${Variable}"); 
column.setWidth(50);//Make this fill the half of the table 
column.setResizable(true); 
column.setMoveable(true); 

TableColumn column1 = viewerColumn1.getColumn(); 
column1.setText("${AAA}"); 
column1.setWidth(50);//Make this fill the half of the table 
column1.setResizable(true); 
column1.setMoveable(true); 

Изображение:

enter image description here

+0

http://stackoverflow.com/questions/9211106/resize-the-column- из-a-table-to-fill-all-the-available-space – Baz

ответ

1

Вы должны установить макет таблицы для таблицы.

TableLayout tableLayout = new TableLayout(); 
createVariablesTable.setLayout(tableLayout); 

Тогда для каждого столбца установить вес столбца:

tableLayout.addColumnData(new ColumnWeightData(50)); 

tableLayout.addColumnData(new ColumnWeightData(50)); 

удалить также вызовы column.setWidth(50)

+0

Привет, setColumnData давал мне проблемы (он, как представляется, не определен как метод TableLayout), и я использовал addColumnData, чтобы он работал: tableLayout.addColumnData (новый ColumnWeightData (50)); – Jaime

+0

Извините, это должно быть 'addColumnData'. 'setColumnData' для немного более сложного' TableColumnLayout'. Обновленный ответ. –

+0

Спасибо, вы мне очень помогаете! Я видел ссылку, которую Baz опубликовал ниже моего комментария, но она использует TableColumnLayout для поддержания пропорций столбца при изменении размера окна. Есть ли способ сделать то же самое с TableLayout, или я должен следовать этому примеру? – Jaime