/*
* 文件名:TableSample.java
* 版权:Copyright 1986-2012 Andy. All Rights Reserved.
* 描述: TableSample.java
* 修改人:Andy
* 修改时间:2012-10-26
* 修改内容:新增
*/
package org.wang.andy.swtjface.demo.table;
import java.util.Hashtable;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.ControlEditor;
import org.eclipse.swt.custom.TableCursor;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.custom.ViewForm;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
/**
* TODO 添加类的一句话简单描述。
* <p>
* TODO 详细描述
* <p>
* TODO 示例代码
*
* <pre>
* </pre>
*
*/
public class TableSample
{
public class TableItemControls
{
Text text;
CCombo combo;
TableEditor tableeditor;
TableEditor tableeditor1;
public TableItemControls(Text text, CCombo combo,
TableEditor tableeditor, TableEditor tableeditor1)
{
// super();
this.text = text;
this.combo = combo;
this.tableeditor = tableeditor;
this.tableeditor1 = tableeditor1;
}
public void dispose()
{
text.dispose();
combo.dispose();
tableeditor.dispose();
tableeditor1.dispose();
}
};
private Shell sShell = null; // @jve:decl-index=0:visual-constraint="10,10"
private ViewForm viewForm = null;
private ToolBar toolBar = null;
private Composite composite = null;
private Table table = null;
private Menu menu = null;
private Hashtable<TableItem, TableItemControls> tablecontrols = new Hashtable<TableItem, TableItemControls>();
// 创建ViewForm面板放置工具栏和表格
private void createViewForm()
{
viewForm = new ViewForm(sShell, SWT.NONE);
// viewForm.setTopCenterSeparate(true);
createToolBar();
viewForm.setTopLeft(toolBar);
createComposite();
viewForm.setContent(composite);
}
// 创建工具栏
private void createToolBar()
{
toolBar = new ToolBar(viewForm, SWT.FLAT);
final ToolItem add = new ToolItem(toolBar, SWT.PUSH);
add.setText("添加");
add.setImage(new Image(toolBar.getDisplay(), "icons//add.gif"));
final ToolItem del = new ToolItem(toolBar, SWT.PUSH);
del.setText("删除");
del.setImage(new Image(toolBar.getDisplay(), "icons//delete.gif"));
final ToolItem back = new ToolItem(toolBar, SWT.PUSH);
back.setText("上移");
back.setImage(new Image(toolBar.getDisplay(), "icons//up.gif"));
final ToolItem forward = new ToolItem(toolBar, SWT.PUSH);
forward.setText("下移");
forward.setImage(new Image(toolBar.getDisplay(), "icons//down.gif"));
final ToolItem save = new ToolItem(toolBar, SWT.PUSH);
save.setText("保存");
save.setImage(new Image(toolBar.getDisplay(), "icons//save.gif"));
// 工具栏按钮事件处理
Listener listener = new Listener()
{
@Override
public void handleEvent(Event event)
{
// 如果单击添加按钮,添加一行,在实际的项目实现中通常是接收输入的参数,案后添加
// 这里为了简单起见,添加固定的一条记录
if (event.widget == add)
{
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"郑六", "女", "568", ""});
}
// 如果单击删除按钮
else if (event.widget == del)
{
// 首先获得表格中所有的行
TableItem[] items = table.getItems();
// 循环所有行
for (int i = items.length - 1; i >= 0; i--)
{
// 如果该行没有被选中,继续循环
if (!items[i].getChecked())
continue;
// 否则选中,查找该表格中是否有该行
int index = table.indexOf(items[i]);
// 如果没有该行,继续循环
if (index < 0)
continue;
// 删除绑定的控件
TableItemControls cons = tablecontrols
.get(items[index]);
if (cons != null)
{
cons.dispose();
tablecontrols.remove(items[index]);
System.out.println("dispose " + index);
}
// 如果有该行,删除该行
// items[index].dispose();
table.remove(index);
System.out.println("i=" + i + ", index=" + index);
System.out.println("行数:" + table.getItemCount());
// table.pack();
}
}
// 如果单击上移按钮
else if (event.widget == back)
{
int selectedRow = table.getSelectionIndex();
if (selectedRow > 0)
table.setSelection(selectedRow - 1);// 设置选中的行数
}
// 如果单击下移按钮
else if (event.widget == forward)
{
int selectedRow = table.getSelectionIndex();
if (selectedRow > -1
&& selectedRow < table.getItemCount() - 1)
table.setSelection(selectedRow + 1);// 设置选中的行数
}
// 如果单击保存按钮
else if (event.widget == save)
{
TableItem[] items = table.getItems();
// 保存到文件或数据库中,数据持久化,这里省略
for (int i = 0; i < items.length; i++)
for (int j = 0; j < table.getColumnCount(); j++)
System.out.println(items[i].getText(j));
}
}
};
// 为工具栏的按钮注册事件
add.addListener(SWT.Selection, listener);
del.addListener(SWT.Selection, listener);
back.addListener(SWT.Selection, listener);
forward.addListener(SWT.Selection, listener);
save.addListener(SWT.Selection, listener);
}
// 创建放置表格的面板
private void createComposite()
{
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 1;
composite = new Composite(viewForm, SWT.NONE);
composite.setLayout(gridLayout);
createTable();
}
// 创建表格
private void createTable()
{
// 表格布局
GridData gridData = new org.eclipse.swt.layout.GridData();
gridData.horizontalAlignment = SWT.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.verticalAlignment = SWT.FILL;
// 创建表格,使用SWT.FULL_SELECTION样式,可同时选中一行
table = new Table(composite, SWT.MULTI | SWT.FULL_SELECTION | SWT.CHECK);
table.setHeaderVisible(true);// 设置显示表头
table.setLayoutData(gridData);// 设置表格布局
table.setLinesVisible(true);// 设置显示表格线/*
// 创建表头的字符串数组
String[] tableHeader = {"姓名", "性别", "电话", "电子邮件"};
for (int i = 0; i < tableHeader.length; i++)
{
TableColumn tableColumn = new TableColumn(table, SWT.NONE);
tableColumn.setText(tableHeader[i]);
// 设置表头可移动,默认为false
tableColumn.setMoveable(true);
}
// 添加三行数据
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"张三", "男", "123", ""});
// 设置图标
// item.setImage( ImageFactory.loadImage(
// table.getDisplay(),ImageFactory.ICON_BOY));
for (int i = 0; i < 5; i++)
{
item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"李四", "男", "4582", ""});
}
// 设置图标
// item.setImage( ImageFactory.loadImage(
// table.getDisplay(),ImageFactory.ICON_BOY));
item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"周五", "女", "567", ""});
// 设置图标
// item.setImage( ImageFactory.loadImage(
// table.getDisplay(),ImageFactory.ICON_GIRL));
// 添加可编辑的单元格
// /******************************************************
TableItem[] items = table.getItems();
for (int i = 0; i < items.length; i++)
{
// 第一列设置,创建TableEditor对象
final TableEditor editor = new TableEditor(table);
// 创建一个文本框,用于输入文字
final Text text = new Text(table, SWT.NONE);
// 将文本框当前值,设置为表格中的值
text.setText(items[i].getText(0));
// 设置编辑单元格水平填充
editor.grabHorizontal = true;
// 关键方法,将编辑单元格与文本框绑定到表格的第一列
editor.setEditor(text, items[i], 0);
// 当文本框改变值时,注册文本框改变事件,该事件改变表格中的数据。
// 否则即使改变的文本框的值,对表格中的数据也不会影响
text.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
editor.getItem().setText(1, text.getText());
}
});
// 同理,为第二列绑定下 拉框CCombo
final TableEditor editor1 = new TableEditor(table);
final CCombo combo = new CCombo(table, SWT.NONE);
combo.add("男");
combo.add("女");
combo.setText(items[i].getText(1));
editor1.grabHorizontal = true;
editor1.setEditor(combo, items[i], 1);
combo.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
editor1.getItem().setText(1, combo.getText());
}
});
// 保存TableItem与绑定Control的对应关系,删除TableItem时使用
TableItemControls cons = new TableItemControls(text, combo, editor,
editor1);
tablecontrols.put(items[i], cons);
}
// *****************************************************/
// /***************************************************
// 创建TableCursor对象,使用上下左右键可以控制表格
final TableCursor cursor = new TableCursor(table, SWT.NONE);
// 创建可编辑的控件
final ControlEditor editor = new ControlEditor(cursor);
editor.grabHorizontal = true;
editor.grabVertical = true;
// 为TableCursor对象注册事件
cursor.addSelectionListener(new SelectionAdapter()
{
// 但移动光标,在单元格上单击回车所触发的事件
public void widgetDefaultSelected(SelectionEvent e)
{
// 创建一个文本框控件
final Text text = new Text(cursor, SWT.NONE);
// 获得当前光标所在的行TableItem对象
TableItem row = cursor.getRow();
// 获得当前光标所在的列数
int column = cursor.getColumn();
// 当前光标所在单元格的值赋给文本框
text.setText(row.getText(column));
// 为文本框注册键盘事件
text.addKeyListener(new KeyListener()
{
@Override
public void keyPressed(KeyEvent e)
{
// 此时在文本框上单击回车后,这是表格中的数据为修改后文本框中的数据
// 然后释放文本框资源
if (e.character == SWT.CR)
{
TableItem row = cursor.getRow();
int column = cursor.getColumn();
row.setText(column, text.getText());
text.dispose();
}
// 如果在文本框中单击了ESC键,则并不对表格中的数据进行修改
if (e.character == SWT.ESC)
{
text.dispose();
}
}
@Override
public void keyReleased(KeyEvent e)
{
// TODO Auto-generated method stub
}
});
// 注册焦点事件
text.addFocusListener(new FocusListener()
{
// 当该文本框失去焦点时,释放文本框资源
public void focusLost(FocusEvent e)
{
text.dispose();
}
@Override
public void focusGained(FocusEvent e)
{
// TODO Auto-generated method stub
}
});
// 将该文本框绑定到可编辑的控件上
editor.setEditor(text);
// 设置文本框的焦点
text.setFocus();
}
// 移动光标到一个单元格上所触发的事件
public void widgetSelected(SelectionEvent e)
{
table.setSelection(new TableItem[]{cursor.getRow()});
}
});
cursor.addMouseListener(new MouseListener()
{
@Override
public void mouseDoubleClick(MouseEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void mouseDown(MouseEvent e)
{
if (e.button == 3)
{ // 右键按下,显示右键菜单
menu.setVisible(true);
}
}
@Override
public void mouseUp(MouseEvent e)
{
// TODO Auto-generated method stub
}
});
// ******************************************************/
// 重新布局表格
for (int i = 0; i < tableHeader.length; i++)
{
table.getColumn(i).pack();
}
// /****************************************************
// 为单元格注册选中事件
table.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
// 获得所有的行数
int total = table.getItemCount();
// 循环所有行
for (int i = 0; i < total; i++)
{
TableItem item = table.getItem(i);
// 如果该行为选中状态,改变背景色和前景色,否则颜色设置
if (table.isSelected(i))
{
item.setBackground(sShell.getDisplay().getSystemColor(
SWT.COLOR_RED));
item.setForeground(sShell.getDisplay().getSystemColor(
SWT.COLOR_WHITE));
}
else
{
item.setBackground(null);
item.setForeground(null);
}
}
}
});
// ******************************************************/
}
public static void main(String[] args)
{
// 调用主窗口
Display display = Display.getDefault();
TableSample thisClass = new TableSample();
thisClass.createSShell();
thisClass.sShell.open();
while (!thisClass.sShell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
// 创建主窗口
private void createSShell()
{
sShell = new Shell();
sShell.setText("表格窗口");
sShell.setLayout(new FillLayout());
createViewForm();
createMenu();
sShell.setSize(new org.eclipse.swt.graphics.Point(307, 218));
sShell.pack();
}
// 创建上下文菜单
private void createMenu()
{
// 创建弹出式菜单
menu = new Menu(sShell, SWT.POP_UP);
// 设置该菜单为表格菜单
table.setMenu(menu);
// 创建删除菜单项
MenuItem del = new MenuItem(menu, SWT.PUSH);
del.setText("删除");
del.setImage(new Image(toolBar.getDisplay(), "icons//delete.gif"));
// 为删除菜单注册事件,当单击时,删除所选择的行
del.addListener(SWT.Selection, new Listener()
{
public void handleEvent(Event event)
{
// 此处需添加删除绑定Control的代码
table.remove(table.getSelectionIndices());
}
});
// 创建查看菜单项
MenuItem view = new MenuItem(menu, SWT.PUSH);
view.setText("查看");
view.setImage(new Image(toolBar.getDisplay(), "icons//scope.gif"));
// 为查看菜单项注册事件,当单击时打印出所选的姓名
view.addListener(SWT.Selection, new Listener()
{
public void handleEvent(Event event)
{
TableItem[] items = table.getSelection();
for (int i = 0; i < items.length; i++)
System.out.print(items[i].getText());
}
});
table.setMenu(menu);
}
}
/*
* 文件名:StartConfigDemo.java
* 版权:Copyright 1986-2012 Andy. All Rights Reserved.
* 描述: StartConfigDemo.java
* 修改人:Andy
* 修改时间:2012-10-26
* 修改内容:新增
*/
package org.wang.andy.swtjface.demo.table;
import java.util.Hashtable;
import java.util.Random;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
/**
*
* <pre>
* </pre>
*
* @author Andy
*/
public class StartConfigDemo
{
private static Hashtable<TableItem, TableItemControls> tablecontrols = new Hashtable<TableItem, TableItemControls>();
public static void main(String[] args)
{
Display display = Display.getDefault();
final Shell shell = new Shell(display);
shell.setText("StartConfigDemo");
shell.setBounds(150, 150, 300, 300);
shell.setLayout(new FillLayout());
Composite rootComposite = new Composite(shell, SWT.NONE);
GridLayout configGridLayout = new GridLayout();
configGridLayout.numColumns = 2;
rootComposite.setLayout(configGridLayout);
rootComposite.setBackground(new Color(Display.getCurrent(), 255, 255,
255));
ToolBar toolBar = new ToolBar(rootComposite, SWT.FLAT);
final ToolItem addItem = new ToolItem(toolBar, SWT.PUSH);
addItem.setImage(new Image(toolBar.getDisplay(), "icons//add.gif"));
final ToolItem deleteItem = new ToolItem(toolBar, SWT.PUSH);
deleteItem
.setImage(new Image(toolBar.getDisplay(), "icons//delete.gif"));
final ToolItem upItem = new ToolItem(toolBar, SWT.PUSH);
upItem.setImage(new Image(toolBar.getDisplay(), "icons//up.gif"));
final ToolItem downItem = new ToolItem(toolBar, SWT.PUSH);
downItem.setImage(new Image(toolBar.getDisplay(), "icons//down.gif"));
GridData barGridData = new GridData();
barGridData.horizontalSpan = 2;
barGridData.horizontalAlignment = SWT.END;
toolBar.setLayoutData(barGridData);
Label inputLabel = new Label(rootComposite, SWT.NONE);
inputLabel.setText("Input:");
inputLabel
.setBackground(new Color(Display.getCurrent(), 255, 255, 255));
GridData inGridData = new GridData();
inGridData.horizontalAlignment = SWT.BEGINNING;
inGridData.verticalAlignment = SWT.TOP;
inputLabel.setLayoutData(inGridData);
// ViewForm viewForm = new ViewForm(rootComposite, SWT.NONE);
// viewForm.setTopCenterSeparate(true);
//
// Composite tabComposite = new Composite(viewForm, SWT.NONE);
// GridLayout gridLayout = new GridLayout();
// gridLayout.numColumns = 1;
// tabComposite.setLayout(gridLayout);
final Table table = new Table(rootComposite, SWT.MULTI
| SWT.FULL_SELECTION | SWT.BORDER);
table.setHeaderVisible(true);
table.setLinesVisible(true);
String[] tableHeader = {"Name", "Type", "Default"};
for (int i = 0; i < tableHeader.length; i++)
{
TableColumn tableColumn = new TableColumn(table, SWT.NONE);
tableColumn.setText(tableHeader[i]);
}
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"aaa", "vvv", "ccc"});
item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"bbb", "111", "cc222"});
item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"周五", "女", "567", ""});
GridData gridData = new GridData();
gridData.horizontalAlignment = SWT.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.verticalAlignment = SWT.FILL;
table.setLayoutData(gridData);
// 重新布局表格
for (int i = 0; i < tableHeader.length; i++)
{
table.getColumn(i).pack();
}
// 添加可编辑的单元格
// /******************************************************
TableItem[] items = table.getItems();
for (int i = 0; i < items.length; i++)
{
// 第一列设置,创建TableEditor对象
final TableEditor editName = new TableEditor(table);
// 创建一个文本框,用于输入文字
final Text name = new Text(table, SWT.NONE);
// 将文本框当前值,设置为表格中的值
name.setText(items[i].getText(0));
// 设置编辑单元格水平填充
editName.grabHorizontal = true;
// 关键方法,将编辑单元格与文本框绑定到表格的第一列
editName.setEditor(name, items[i], 0);
// 当文本框改变值时,注册文本框改变事件,该事件改变表格中的数据。
// 否则即使改变的文本框的值,对表格中的数据也不会影响
name.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
editName.getItem().setText(1, name.getText());
}
});
// 第一列设置,创建TableEditor对象
final TableEditor editType = new TableEditor(table);
// 创建一个文本框,用于输入文字
final Text type = new Text(table, SWT.NONE);
// 将文本框当前值,设置为表格中的值
type.setText(items[i].getText(1));
// 设置编辑单元格水平填充
editType.grabHorizontal = true;
// 关键方法,将编辑单元格与文本框绑定到表格的第一列
editType.setEditor(type, items[i], 1);
// 当文本框改变值时,注册文本框改变事件,该事件改变表格中的数据。
// 否则即使改变的文本框的值,对表格中的数据也不会影响
type.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
editType.getItem().setText(1, type.getText());
}
});
// 第一列设置,创建TableEditor对象
final TableEditor editValue = new TableEditor(table);
// 创建一个文本框,用于输入文字
final Text value = new Text(table, SWT.NONE);
// 将文本框当前值,设置为表格中的值
value.setText(items[i].getText(2));
// 设置编辑单元格水平填充
editValue.grabHorizontal = true;
// 关键方法,将编辑单元格与文本框绑定到表格的第一列
editValue.setEditor(value, items[i], 2);
// 当文本框改变值时,注册文本框改变事件,该事件改变表格中的数据。
// 否则即使改变的文本框的值,对表格中的数据也不会影响
value.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
editValue.getItem().setText(1, value.getText());
}
});
// 保存TableItem与绑定Control的对应关系,删除TableItem时使用
TableItemControls cons = new TableItemControls(name, type, value,
editName, editType, editValue);
tablecontrols.put(items[i], cons);
}
Label outputLabel = new Label(rootComposite, SWT.NONE);
outputLabel.setText("Output Type:");
outputLabel
.setBackground(new Color(Display.getCurrent(), 255, 255, 255));
GridData outGridData = new GridData();
inGridData.horizontalAlignment = SWT.BEGINNING;
outputLabel.setLayoutData(outGridData);
Text outPut = new Text(rootComposite, SWT.BORDER);
gridData.horizontalAlignment = SWT.FILL;
// gridData.grabExcessHorizontalSpace = true;
// gridData.grabExcessVerticalSpace = true;
outPut.setLayoutData(outGridData);
// 工具栏按钮事件处理
Listener listener = new Listener()
{
@Override
public void handleEvent(Event event)
{
// 如果单击添加按钮,添加一行,在实际的项目实现中通常是接收输入的参数,案后添加
// 这里为了简单起见,添加固定的一条记录
if (event.widget == addItem)
{
TableItem item = new TableItem(table, SWT.NONE);
item.setText(new String[]{"郑六" + new Random().nextInt(15),
"女", "568"});
}
// 如果单击删除按钮
else if (event.widget == deleteItem)
{
// 首先获得表格中所有的行
TableItem[] items = table.getItems();
// 循环所有行
for (int i = items.length - 1; i >= 0; i--)
{
// 如果该行没有被选中,继续循环
if (!items[i].getChecked())
continue;
// 否则选中,查找该表格中是否有该行
int index = table.indexOf(items[i]);
// 如果没有该行,继续循环
if (index < 0)
continue;
// 删除绑定的控件
TableItemControls cons = tablecontrols
.get(items[index]);
if (cons != null)
{
cons.dispose();
tablecontrols.remove(items[index]);
System.out.println("dispose " + index);
}
// 如果有该行,删除该行
// items[index].dispose();
table.remove(index);
System.out.println("i=" + i + ", index=" + index);
System.out.println("行数:" + table.getItemCount());
// table.pack();
}
}
// 如果单击上移按钮
else if (event.widget == upItem)
{
int selectedRow = table.getSelectionIndex();
if (selectedRow > 0)
table.setSelection(selectedRow - 1);// 设置选中的行数
}
// 如果单击下移按钮
else if (event.widget == upItem)
{
int selectedRow = table.getSelectionIndex();
if (selectedRow > -1
&& selectedRow < table.getItemCount() - 1)
table.setSelection(selectedRow + 1);// 设置选中的行数
}
}
};
// 为工具栏的按钮注册事件
addItem.addListener(SWT.Selection, listener);
deleteItem.addListener(SWT.Selection, listener);
upItem.addListener(SWT.Selection, listener);
downItem.addListener(SWT.Selection, listener);
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
}
class TableItemControls
{
Text name;
Text type;
Text value;
TableEditor tableeditor;
TableEditor tableeditor2;
TableEditor tableeditor1;
public TableItemControls(Text name, Text type, Text value,
TableEditor tableeditor, TableEditor tableeditor1,
TableEditor tableeditor2)
{
// super();
this.name = name;
this.type = type;
this.value = value;
this.tableeditor = tableeditor;
this.tableeditor1 = tableeditor1;
this.tableeditor2 = tableeditor2;
}
public void dispose()
{
name.dispose();
value.dispose();
value.dispose();
tableeditor.dispose();
tableeditor1.dispose();
tableeditor2.dispose();
}
}
