JFace + SWT Composite table 查看器
JFace + SWT Composite table viewer
当我尝试创建复合 table 列时出现错误?
错误是:
错误来自 Arrayindexout of Bound:
当我使用 Composite 时,应用程序没有启动:
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));
}
}
您的代码所做的只是使用 TableColumnLayout
设置 table 的布局。您没有实际创建此布局将管理的 table。当你 运行 代码处于这种状态时,它会崩溃,因为它找不到 table.
所以您必须添加代码来创建 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
,您需要对其进行更改。您可能还必须定义标签提供程序。
这个很简单table就是不使用列。您需要使用 TableViewerColumn
定义列以充分利用此布局。
注意: ViewPart
是插件中的 Eclipse 视图(可能是独立 RCP 的一部分)。它不是一个普通的 JFace + SWT 应用程序。
当我尝试创建复合 table 列时出现错误?
错误是:
错误来自 Arrayindexout of Bound:
当我使用 Composite 时,应用程序没有启动:
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));
}
}
您的代码所做的只是使用 TableColumnLayout
设置 table 的布局。您没有实际创建此布局将管理的 table。当你 运行 代码处于这种状态时,它会崩溃,因为它找不到 table.
所以您必须添加代码来创建 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
,您需要对其进行更改。您可能还必须定义标签提供程序。
这个很简单table就是不使用列。您需要使用 TableViewerColumn
定义列以充分利用此布局。
注意: ViewPart
是插件中的 Eclipse 视图(可能是独立 RCP 的一部分)。它不是一个普通的 JFace + SWT 应用程序。