簡體   English   中英

如何使用tableviewer創建一個表,該表在jface中具有2個列和10行

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

如何使用具有2列和10行的TableViewer創建表。我正在嘗試使用上述鏈接http://www.vogella.com/tutorials/EclipseJFaceTable/article.html創建表

我無法開發它。所以請幫助我,因為我是jface新手

我已經創建了表的列,但是無法使用內容提供者和標簽將數據添加到表中,因此請幫助我。創建列標題的代碼如下

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");

您需要一個包含行數據的類,例如:

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

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

將列標簽提供程序添加到您的列中,以從您的類中獲取數據:

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();
  }
});

使用標准的數組/列表內容提供程序:

tableViewer.setContentProvider(ArrayContentProvider.getInstance());

創建一個包含您的行的列表:

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

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

告訴表查看器使用該列表:

tableViewer.setInput(rows);

setInput調用必須最后完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM