简体   繁体   English

如何使用tableviewer创建一个表,该表在jface中具有2个列和10行

[英]How to create a table using tableviewer which has 2 coloumns and 10 rows in jface

How to create a table using TableViewer which has 2 columns and 10 rows.I am trying to create a table using the above link http://www.vogella.com/tutorials/EclipseJFaceTable/article.html 如何使用具有2列和10行的TableViewer创建表。我正在尝试使用上述链接http://www.vogella.com/tutorials/EclipseJFaceTable/article.html创建表

i am not able to develop it .So please help me to do as i am new to jface 我无法开发它。所以请帮助我,因为我是jface新手

I have created the columns of the table but i am not able to add the data into it using content provider and label so please help me to do.The code to create the column header is as follows 我已经创建了表的列,但是无法使用内容提供者和标签将数据添加到表中,因此请帮助我。创建列标题的代码如下

TableColumnLayout layout = new TableColumnLayout();
composite.setLayout(layout);

//Instantiate TableViewer
TableViewer tableViewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION);
table = tableViewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);

TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn empty = tableViewerColumn.getColumn();

layout.setColumnData(empty, new ColumnPixelData(100, true, true));
empty.setText("");

TableViewerColumn tableViewerColumn_Time = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn time = tableViewerColumn_Time.getColumn();
//Specify width using weights
layout.setColumnData(time, new ColumnWeightData(2, ColumnWeightData.MINIMUM_WIDTH, true));
time.setText("Time");

TableViewerColumn tableViewerColumn_2 = new TableViewerColumn(tableViewer, SWT.NONE);
TableColumn message = tableViewerColumn_2.getColumn();
//Specify width using weights
layout.setColumnData(message, new ColumnWeightData(4, ColumnWeightData.MINIMUM_WIDTH, true));
message.setText("Message");

You need a class containing the data for the rows, something like: 您需要一个包含行数据的类,例如:

class MyRowData
{
  String getTime()
  {
     ... your code
  }

  String getMessage()
  {
     .... your code
  }
}

Add column label providers to your columns which get the data from your class: 将列标签提供程序添加到您的列中,以从您的类中获取数据:

tableViewerColumn_Time.setLabelProvider(new ColumnLabelProvider() { 
  @Override
  public String getText(Object element) {
    return ((MyRowData)element).getTime();
  }
});

tableViewerColumn_2.setLabelProvider(new ColumnLabelProvider() { 
  @Override
  public String getText(Object element) {
    return ((MyRowData)element).getMessage();
  }
});

Use a standard array / list content provider: 使用标准的数组/列表内容提供程序:

tableViewer.setContentProvider(ArrayContentProvider.getInstance());

Create a list containing your rows: 创建一个包含您的行的列表:

List<MyRowData> rows = new ArrayList<>();

rows.add(new MyRowData(..... 
....

Tell the table viewer to use the list: 告诉表查看器使用该列表:

tableViewer.setInput(rows);

This setInput call must be done last. setInput调用必须最后完成。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM