2016-09-09 12 views
0

У меня ошибка Когда я пытаюсь создать составной столбец таблицы?JFace + SWT Composite table viewer

Ошибка: Ошибка Come Arrayindexout из Bound: Error Come Arrayindexout of Bound image1

приложение не запускается, когда я беру Композитный: Application does not start when I take Composite image2

import org.eclipse.jface.layout.TableColumnLayout; 
import org.eclipse.jface.viewers.TableViewer; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.ui.IMemento; 
import org.eclipse.ui.part.ViewPart; 

public class Theartview extends ViewPart implements Serializable { 

    public void createPartControl(Composite parent) { 

    Composite tableComposite = new Composite(parent, SWT.NONE); 
    TableColumnLayout tableColumnLayout = new TableColumnLayout(); 
    tableComposite.setLayout(tableColumnLayout); 
    tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, 
      true)); 
    } 
} 
+0

ViewPart означает, что это плагин Eclipse, возможно, в RCP, а не только SWT + JFace. –

ответ

1

Весь ваш код делает, настройка макета для используя TableColumnLayout. Вы ничего не сделали, чтобы создать таблицу, которой будет управлять этот макет. Когда вы запускаете код в этом состоянии, он выходит из строя, потому что он не может найти таблицу.

Таким образом, вы должны добавить код, чтобы создать TableViewer, как минимум это может быть что-то вроде:

Composite tableComposite = new Composite(parent, SWT.NONE); 
TableColumnLayout tableColumnLayout = new TableColumnLayout(); 
tableComposite.setLayout(tableColumnLayout); 
tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

TableViewer viewer = new TableViewer(tableComposite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); 
viewer.setContentProvider(ArrayContentProvider.getInstance()); 
// TODO viewer.setLabelProvider(new ViewLabelProvider()); 
viewer.setInput(new String[] {"One", "Two", "Three"}); 

Я только что показал простой setInput здесь, вам нужно будет изменить. Вероятно, вам также придется определить поставщика ярлыков.

Эта очень простая таблица не использует столбцы. Вам необходимо определить столбцы, используя TableViewerColumn, чтобы в полной мере использовать этот макет.

Примечание:ViewPart - это представление Eclipse в плагине (которое может быть частью автономного RCP). Это не простое приложение JFace + SWT.