创建一个Table的步骤如下:
1。 实例化Table,生成一张空表
2。 实例化TableColumn,添加列
3。 实例化TableItem,添加行
package org.vhow.swt.table;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
public class SimpleTable
{
private static int COLUMNS_CNT = 3;
private static int ROWS_CNT = 3;
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
shell.setSize(300, 400);
// ------------- core snippet start...
// step1: create a Table object
Table table = new Table(shell, SWT.None);
// table.setHeaderVisible(true);
// table.setLinesVisible(true);
// step2: add columns
for (int i = 0; i < COLUMNS_CNT; i++)
{
new TableColumn(table, SWT.CENTER).setText("TableColumn" + (i + 1));
table.getColumn(i).pack();
}
TableItem item = null;
// step3: add rows
for (int row = 0; row < ROWS_CNT; row++)
{
item = new TableItem(table, SWT.NONE);
for (int col = 0; col < COLUMNS_CNT; col++)
{
item.setText(col, "TableItem-" + (row + 1) + "-" + (col + 1));
}
}
// ------------- core snippet end.
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
shell.dispose();
}
}
运行以上代码,效果如下:
很多时候我们还需要监听end-user的选择:
// add listener
table.addMouseListener(new MouseListener()
{
@Override
public void mouseUp(MouseEvent e) {}
@Override
public void mouseDown(MouseEvent e)
{
MessageDialog.openInformation(shell, "Message",
table.getItem(table.getSelectionIndex()).getText());
}
@Override
public void mouseDoubleClick(MouseEvent e) {}
});
另外,我们还可以暴露接口,让用户来添加和删除表中数据:
delButton.addListener(SWT.MouseUp, new Listener()
{
@Override
public void handleEvent(Event event)
{
int selectionIndex = table.getSelectionIndex();
if (selectionIndex != -1)
{
table.getItem(selectionIndex).dispose();
}
}
});
addButton.addListener(SWT.MouseUp, new Listener()
{
@Override
public void handleEvent(Event event)
{
new TableItem(table, SWT.NONE);
}
});