I am trying to work out how JFace's structural elements work. I made the following simple interface:
protected Control createContents(Composite parent)
{
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout(SWT.HORIZONTAL));
TableViewer tableViewer = new TableViewer(container, SWT.BORDER | SWT.FULL_SELECTION);
table = tableViewer.getTable();
table.setLinesVisible(true);
table.setHeaderVisible(true);
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
tableViewer.setInput(new String[][]{{"1", "2", "3"},{"1", "2", "3"},{"1", "2", "3"}});
TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn tblclmnTest = tableViewerColumn.getColumn();
tblclmnTest.setWidth(58);
tblclmnTest.setText("Test1");
tableViewerColumn.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
return super.getText(((String[])element)[0]);
}
});
TableViewerColumn tableViewerColumn2 = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn tblclmnTest2 = tableViewerColumn2.getColumn();
tblclmnTest2.setWidth(58);
tblclmnTest2.setText("Test2");
tableViewerColumn2.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
return super.getText(((String[])element)[1]);
}
});
TableViewerColumn tableViewerColumn3 = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn tblclmnTest3 = tableViewerColumn3.getColumn();
tblclmnTest3.setWidth(58);
tblclmnTest3.setText("Test3");
tableViewerColumn3.setLabelProvider(new ColumnLabelProvider()
{
@Override
public String getText(Object element)
{
return super.getText(((String[])element)[2]);
}
});
return container;
}
I did everything similar to the tutorial but the problem is: getText()
methods aren't being called. I figured it out by inserting System.out.prinln
into them. And the result doesn't look like it supposed to look:
What is my mistake?
You are calling tableViewer.setInput
before setting up the table columns - you must do the setInput
after all the columns are defined.