⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tableviewerimplbyswt.java

📁 用SWT实现的一个tableviewer,tableviewer的各种功能都体现出来.
💻 JAVA
字号:
package net.advanced.eclipse.sample.views;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.CCombo;import org.eclipse.swt.custom.TableEditor;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.graphics.Rectangle;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.ProgressBar;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.ui.forms.widgets.Hyperlink;import org.eclipse.ui.part.ViewPart;/** * @Title: TableViewerImplBySWT.java * @Copyright:  * @Company:  * @Created on 2005-11-25 14:34:40 * @author sunqh * @version $Revision: 1.11 $ * @since 1.0 */public class TableViewerImplBySWT extends ViewPart{    private Table table;    private TableEditor editor;    private Text text;    private CCombo combo;    private Hyperlink link;    public void createPartControl(Composite parent){        GridLayout layout=new GridLayout();        GridData gd=new GridData(GridData.FILL_BOTH);        gd.grabExcessHorizontalSpace=true;        gd.grabExcessVerticalSpace=true;        gd.heightHint=0;        gd.horizontalIndent=0;        gd.widthHint=0;        parent.setLayout(layout);        parent.setLayoutData(gd);        table=new Table(parent,SWT.BORDER|SWT.MULTI);        table.setHeaderVisible(true);        table.setLinesVisible(true);        gd=new GridData(GridData.FILL_BOTH);        table.setLayoutData(gd);        addColumns();        addItems();        editor=new TableEditor(table);        editor.horizontalAlignment=SWT.LEFT;        editor.grabHorizontal=true;        table.addListener(SWT.MouseDown,new Listener(){            public void handleEvent(Event event){                Rectangle clientArea=table.getClientArea();                Point pt=new Point(event.x,event.y);                int index=table.getTopIndex();                while(index<table.getItemCount()){                    boolean visible=false;                    final TableItem item=table.getItem(index);                    for(int i=0;i<table.getColumnCount();i++){                        Rectangle rect=item.getBounds(i);                        if(rect.contains(pt)){                            final int column=i;                                                        if(link != null && !link.isDisposed())                                link.dispose();                            if(text != null && !text.isDisposed())                                text.dispose();                            if(combo!=null&&!combo.isDisposed())                                combo.dispose();                            Listener textListener=new Listener(){                                public void handleEvent(final Event e){                                    switch(e.type){                                    case SWT.FocusOut:                                        if(column==1){                                            item.setText(column,combo.getText());                                            combo.dispose();                                         }else{                                            item.setText(column,text.getText());                                            text.dispose();                                         }                                        break;                                    }                                }                            };                            if(column==1){                                combo=new CCombo(table,SWT.FLAT);                                combo.addListener(SWT.FocusOut,textListener);                                combo.add("Male",0);                                combo.add("Female",1);                                combo.select(0);                                editor.setEditor(combo,item,column);                                combo.setFocus();                            }else{                                text=new Text(table,SWT.NONE);                                text.addListener(SWT.FocusOut,textListener);                                editor.setEditor(text,item,i);                                text.setText(item.getText(i));                                text.selectAll();                                text.setFocus();                            }                            return;                        }                        if(!visible&&rect.intersects(clientArea)){                            visible=true;                        }                    }                    if(!visible)                        return;                    index++;                }            }        });                table.addListener (SWT.MouseMove, new Listener () {            public void handleEvent (Event event) {                Rectangle clientArea = table.getClientArea ();                Point pt = new Point (event.x, event.y);                int index = table.getTopIndex ();                while (index < table.getItemCount ()) {                    boolean visible = false;                    final TableItem item = table.getItem (index);                    for (int i=0; i<=table.getColumnCount (); i++) {                        Rectangle rect = item.getBounds (i);                        if (rect.contains (pt)) {                            if(i==4){                                if(link != null && !link.isDisposed())                                    link.dispose();                                if(text != null && !text.isDisposed())                                    text.dispose();                                if(combo!=null&&!combo.isDisposed())                                    combo.dispose();                                                                link = new Hyperlink(table,SWT.COLOR_WHITE);                                link.setText("View");                                link.setUnderlined(true);                                link.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));                                link.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));                                editor.setEditor (link, item, i);                            }                            return;                        }                        if (!visible && rect.intersects (clientArea)) {                            visible = true;                        }                    }                    if (!visible) return;                    index++;                }            }        });    }    public void addItems(){        TableItem item1=new TableItem(table,SWT.NONE);        item1.setText(new String[] { "Richard Sun", "Male", "5000","Xiaoxitian torii,Haidian District,Beijing.","View" });                TableItem item2=new TableItem(table,SWT.NONE);        item2.setText(new String[] { "Jacky Root", "Female", "6000","Xiaoxitian torii,Haidian District,Beijing.","View" });        ProgressBar bar=new ProgressBar(table,SWT.HORIZONTAL);        bar.setMaximum(10);        bar.setSelection(7);                editor=new TableEditor(table);        editor.grabHorizontal=editor.grabVertical=true;        editor.setEditor(bar,item1,5);                bar=new ProgressBar(table,SWT.HORIZONTAL);        bar.setMaximum(10);        bar.setSelection(5);                editor=new TableEditor(table);        editor.grabHorizontal=editor.grabVertical=true;        editor.setEditor(bar,item2,5);    }    public void addColumns(){        TableColumn employeeName=new TableColumn(table,SWT.LEFT);        employeeName.setResizable(true);        employeeName.setText("雇员名称");        employeeName.setWidth(150);        TableColumn employeeGender=new TableColumn(table,SWT.CENTER);        employeeGender.setResizable(true);        employeeGender.setText("雇员性别");        employeeGender.setWidth(70);        TableColumn employeeSalary=new TableColumn(table,SWT.LEFT);        employeeSalary.setResizable(true);        employeeSalary.setText("雇员薪资");        employeeSalary.setWidth(100);        TableColumn employeeAddress=new TableColumn(table,SWT.LEFT);        employeeAddress.setResizable(true);        employeeAddress.setText("雇员联系方式");        employeeAddress.setWidth(250);                TableColumn employeeDetail=new TableColumn(table,SWT.LEFT);        employeeDetail.setResizable(true);        employeeDetail.setText("雇员照片");        employeeDetail.setWidth(70);                TableColumn employeeAuth=new TableColumn(table,SWT.LEFT);        employeeAuth.setResizable(true);        employeeAuth.setText("雇员信息校验");        employeeAuth.setWidth(100);    }    public void setFocus(){        table.setFocus();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -