Question

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:

screenshot

What is my mistake?

Était-ce utile?

La solution

You are calling tableViewer.setInput before setting up the table columns - you must do the setInput after all the columns are defined.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top