swt table

来源:互联网 发布:淘宝杂货类目有哪些 编辑:程序博客网 时间:2024/04/27 21:02
import java.awt.Toolkit;import java.util.ArrayList;import java.util.List;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.MenuManager;import org.eclipse.jface.action.StatusLineManager;import org.eclipse.jface.viewers.CellEditor;import org.eclipse.jface.viewers.ICellModifier;import org.eclipse.jface.viewers.ILabelProviderListener;import org.eclipse.jface.viewers.IStructuredContentProvider;import org.eclipse.jface.viewers.ITableLabelProvider;import org.eclipse.jface.viewers.StructuredSelection;import org.eclipse.jface.viewers.TableViewer;import org.eclipse.jface.viewers.TextCellEditor;import org.eclipse.jface.viewers.Viewer;import org.eclipse.jface.window.ApplicationWindow;import org.eclipse.swt.SWT;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Item;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.TableColumn;public class MainWindow extends ApplicationWindow{public class Person {private int ID;private String name;private String gender;private String color;public Person() {super();// TODO Auto-generated constructor stub}public Person(int iD, String name, String gender, String color) {super();ID = iD;this.name = name;this.gender = gender;this.color = color;}public int getID() {return ID;}public void setID(int iD) {ID = iD;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}}private TableViewer tableViewer;private List personList;public static final int ID =0;public static final int NAME = 1;public static final int GENDER = 2;public static final int COLOR= 3;public static final String[] COLUMN_NAME={"id","name","sex","color"};public MainWindow() {super(null);// TODO Auto-generated constructor stubinitData();this.addMenuBar();this.addStatusLine();}private void initData() {personList = new ArrayList();personList.add(new Person(1, "name1", "m", "redd"));personList.add(new Person(2, "name2", "f", "red"));personList.add(new Person(3, "name3", "f", "red"));}@Overrideprotected void configureShell(Shell shell) {// TODO Auto-generated method stubsuper.configureShell(shell);//shell.setImage(new Image(shell.getDisplay(), "main_title.jpg"));shell.setText("TableViewer");int screenW = Toolkit.getDefaultToolkit().getScreenSize().width;int screenH = Toolkit.getDefaultToolkit().getScreenSize().height;shell.setSize(500, 300);int shellW = shell.getBounds().width;int shellH = shell.getBounds().height;if(shellW>screenW){shellW=screenW;}if(shellH>screenH){shellH=screenH;}shell.setLocation((screenW-shellW)/2, (screenH-shellH)/2);}@Overrideprotected Control createContents(Composite parent) {tableViewer = new TableViewer(parent,SWT.FULL_SELECTION|SWT.CENTER);for(int i=0;i<COLUMN_NAME.length;i++){TableColumn tableColumn = new TableColumn(tableViewer.getTable(), SWT.LEFT);tableColumn.setText(COLUMN_NAME[i]);tableViewer.getTable().getColumn(i).pack();}tableViewer.getTable().setHeaderVisible(true);tableViewer.getTable().setLinesVisible(true);tableViewer.setContentProvider(new TableContentProvider());tableViewer.setLabelProvider(new TableLableProvider());tableViewer.setInput(personList);createContextMenu();editorTableViewer();return parent;}private void editorTableViewer() {tableViewer.setColumnProperties(COLUMN_NAME);CellEditor[] cellEditors = new CellEditor[4];cellEditors[0] = null;cellEditors[1] = new TextCellEditor(tableViewer.getTable());cellEditors[2] = new TextCellEditor(tableViewer.getTable());cellEditors[3] = new TextCellEditor(tableViewer.getTable());tableViewer.setCellEditors(cellEditors);tableViewer.setCellModifier(new ICellModifier() {@Overridepublic void modify(Object element, String property, Object value) {if(element instanceof Item){element=((Item)element).getData();Person person=(Person)element;if(property.equals(COLUMN_NAME[1])){person.setName((String)value);}else if(property.equals(COLUMN_NAME[2])){person.setGender((String)value);}else if(property.equals(COLUMN_NAME[3])){person.setColor((String)value);}}}public Object getValue(Object element, String property) {Person person =(Person)element;if(property.equals(COLUMN_NAME[1])){return person.getName();}else if(property.equals(COLUMN_NAME[2])){return person.getGender();}else if(property.equals(COLUMN_NAME[3])){return person.getColor();}return null;}public boolean canModify(Object element, String property) {if(property.equals(COLUMN_NAME[0])){return false;}return true;}});}class TableContentProvider implements IStructuredContentProvider{@Overridepublic Object[] getElements(Object inputElement) {// TODO Auto-generated method stubreturn ((List)inputElement).toArray();}@Overridepublic void dispose() {// TODO Auto-generated method stub}@Overridepublic void inputChanged(Viewer arg0, Object arg1, Object arg2) {// TODO Auto-generated method stub}}class TableLableProvider implements ITableLabelProvider{@Overridepublic Image getColumnImage(Object arg0, int arg1) {// TODO Auto-generated method stubreturn null;}@Overridepublic String getColumnText(Object element, int columnIndex) {// TODO Auto-generated method stubPerson person =(Person)element;if(columnIndex == ID){return person.getID()+"";}else if(columnIndex == NAME){return person.getName();}else if(columnIndex == GENDER){return person.getGender();}else if(columnIndex ==COLOR){return person.getColor();}return "";}@Overridepublic void addListener(ILabelProviderListener arg0) {// TODO Auto-generated method stub}@Overridepublic void dispose() {// TODO Auto-generated method stub}@Overridepublic boolean isLabelProperty(Object arg0, String arg1) {// TODO Auto-generated method stubreturn false;}@Overridepublic void removeListener(ILabelProviderListener arg0) {// TODO Auto-generated method stub}}class AddAction extends Action{ public AddAction(){setText("add");}@Overridepublic void run() {Person person = new Person();person.setID(tableViewer.getTable().getItemCount()+1);person.setName("mimi");person.setGender("f");person.setColor("red");tableViewer.add(person);}}class DeleteAction extends Action{public DeleteAction(){setText("delete");}@Overridepublic void run() {StructuredSelection selection = (StructuredSelection)tableViewer.getSelection();Person person=(Person)selection.getFirstElement();getStatusLineManager().setMessage(person.getName()+" "+person.getGender()+" "+person.getColor());tableViewer.remove(person);}}class Refresh extends Action{public Refresh(){setText("refresh");}@Overridepublic void run() {tableViewer.refresh();}}public void createContextMenu(){MenuManager menuBar = new MenuManager();menuBar.add(new AddAction());menuBar.add(new DeleteAction());menuBar.add(new Refresh());Menu menu =menuBar.createContextMenu(getShell());tableViewer.getTable().setMenu(menu);}@Overrideprotected MenuManager createMenuManager() {MenuManager menuBar = new MenuManager();MenuManager editorMenu = new MenuManager("edit");menuBar.add(editorMenu);editorMenu.add(new AddAction());editorMenu.add(new DeleteAction());return menuBar;}@Overrideprotected StatusLineManager getStatusLineManager() {// TODO Auto-generated method stubreturn super.getStatusLineManager();}@Overrideprotected StatusLineManager createStatusLineManager() {StatusLineManager statusLineManager =new StatusLineManager();return statusLineManager;}public static void main(String[] args) {MainWindow main = new MainWindow();main.setBlockOnOpen(true);main.open();Display.getCurrent().dispose();}}
原创粉丝点击