SWT Table示例

来源:互联网 发布:知询律师 编辑:程序博客网 时间:2024/04/27 14:30
/* * 文件名: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();    }}


原创粉丝点击