2016-10-05 4 views
0

Ich habe einen TableViewer erstellt, der eine Tabelle mit zwei Spalten enthält. Tatsache ist, dass die beiden Spalten nicht den gesamten Tabellenbereich ausfüllen und ich zwei Spalten mit denselben Proportionen erstellen möchte, um sie zu füllen.Wie kann ich die Spalten füllen die gesamte Tabelle?

Code:

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); 

Image:

enter image description here

+0

http://stackoverflow.com/questions/9211106/resize-the-column- von einer Tabelle zu füllen-all-the-available-Platz – Baz

Antwort

1

Sie benötigen ein Tabellen-Layout für die Tabelle zu setzen.

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

dann für jede Spalte eine Spaltengewicht:

tableLayout.addColumnData(new ColumnWeightData(50)); 

tableLayout.addColumnData(new ColumnWeightData(50)); 

entfernen sich auch die Anrufe zu column.setWidth(50)

+0

Hallo, setColumnData gab mir Probleme (es scheint nicht als TableLayout-Methode definiert werden) und ich habe addColumnData verwendet, um es funktionieren zu lassen: tableLayout.addColumnData (neue ColumnWeightData (50)); – Jaime

+0

Sorry, es sollte 'addColumnData' sein. 'setColumnData' ist für das etwas kompliziertere' TableColumnLayout'. Aktualisierte Antwort –

+0

Danke, du hilfst mir sehr! Ich habe den Link, den Baz unterhalb meines Kommentars gepostet hat, gesehen, aber er verwendet TableColumnLayout, um die Proportionen der Spalte bei der Größenänderung des Fensters beizubehalten. Gibt es eine Möglichkeit, dasselbe mit TableLayout zu machen, oder sollte ich diesem Beispiel folgen? – Jaime

Verwandte Themen