TableView单元格的颜色对话框
来源:互联网 发布:python 远程兼职 编辑:程序博客网 时间:2024/06/05 00:43
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CheckboxCellEditor;
import org.eclipse.jface.viewers.ColorCellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
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.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.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
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.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
public class MainClass extends ApplicationWindow {
public static final String NAME = "Name";
public static final String MALE = "Male?";
public static final String AGE = "Age Range";
public static final String SHIRT_COLOR = "Shirt Color";
public static final String[] PROPS = { NAME, MALE, AGE, SHIRT_COLOR };
private final java.util.List studentList = new ArrayList();
public MainClass() {
super(null);
setBlockOnOpen(true);
open();
Display.getCurrent().dispose();
}
@Override
protected void configureShell(final Shell shell) {
super.configureShell(shell);
shell.setText("Person Editor");
shell.setSize(400, 400);
}
@Override
protected Control createContents(final Composite parent) {
final Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
final Button newPerson = new Button(composite, SWT.PUSH);
newPerson.setText("Create New Person");
final TableViewer tv = new TableViewer(composite, SWT.FULL_SELECTION);
tv.setContentProvider(new PersonContentProvider());
tv.setLabelProvider(new StudentLabelProvider());
tv.setInput(studentList);
final Table table = tv.getTable();
table.setLayoutData(new GridData(GridData.FILL_BOTH));
new TableColumn(table, SWT.CENTER).setText(NAME);
new TableColumn(table, SWT.CENTER).setText(MALE);
new TableColumn(table, SWT.CENTER).setText(AGE);
new TableColumn(table, SWT.CENTER).setText(SHIRT_COLOR);
for (int i = 0, n = table.getColumnCount(); i < n; i++) {
table.getColumn(i).pack();
}
table.setHeaderVisible(true);
table.setLinesVisible(true);
newPerson.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent event) {
final Student p = new Student();
p.setName("Name");
p.setMale(true);
p.setAgeRange(Integer.valueOf("0"));
p.setShirtColor(new RGB(255, 0, 0));
studentList.add(p);
tv.refresh();
}
});
final CellEditor[] editors = new CellEditor[4];
editors[0] = new TextCellEditor(table);
editors[1] = new CheckboxCellEditor(table);
editors[2] = new ComboBoxCellEditor(table, AgeRange.INSTANCES, SWT.READ_ONLY);
editors[3] = new ColorCellEditor(table);
tv.setColumnProperties(PROPS);
tv.setCellModifier(new StudentCellModifier(tv));
tv.setCellEditors(editors);
return composite;
}
public static void main(final String[] args) {
new MainClass();
}
}
class StudentCellModifier implements ICellModifier {
private final Viewer viewer;
public StudentCellModifier(final Viewer viewer) {
this.viewer = viewer;
}
@Override
public boolean canModify(final Object element, final String property) {
return true;
}
@Override
public Object getValue(final Object element, final String property) {
final Student p = (Student) element;
if (MainClass.NAME.equals(property)) {
return p.getName();
} else if (MainClass.MALE.equals(property)) {
return Boolean.valueOf(p.isMale());
} else if (MainClass.AGE.equals(property)) {
return p.getAgeRange();
} else if (MainClass.SHIRT_COLOR.equals(property)) {
return p.getShirtColor();
} else {
return null;
}
}
@Override
public void modify(Object element, final String property, final Object value) {
if (element instanceof Item) {
element = ((Item) element).getData();
}
final Student p = (Student) element;
if (MainClass.NAME.equals(property)) {
p.setName((String) value);
} else if (MainClass.MALE.equals(property)) {
p.setMale(((Boolean) value).booleanValue());
} else if (MainClass.AGE.equals(property)) {
p.setAgeRange((Integer) value);
} else if (MainClass.SHIRT_COLOR.equals(property)) {
p.setShirtColor((RGB) value);
}
viewer.refresh();
}
}
class PersonContentProvider implements IStructuredContentProvider {
@Override
public Object[] getElements(final Object inputElement) {
return ((List) inputElement).toArray();
}
@Override
public void dispose() {
}
@Override
public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
}
}
class Student {
private String name;
private boolean male;
private Integer ageRange;
private RGB shirtColor;
public Integer getAgeRange() {
return ageRange;
}
public void setAgeRange(final Integer ageRange) {
this.ageRange = ageRange;
}
public boolean isMale() {
return male;
}
public void setMale(final boolean male) {
this.male = male;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public RGB getShirtColor() {
return shirtColor;
}
public void setShirtColor(final RGB shirtColor) {
this.shirtColor = shirtColor;
}
}
class StudentLabelProvider implements ITableLabelProvider {
@Override
public Image getColumnImage(final Object element, final int columnIndex) {
return null;
}
@Override
public String getColumnText(final Object element, final int columnIndex) {
final Student person = (Student) element;
switch (columnIndex) {
case 0:
return person.getName();
case 1:
return Boolean.toString(person.isMale());
case 2:
return AgeRange.INSTANCES[person.getAgeRange().intValue()];
case 3:
return person.getShirtColor().toString();
}
return null;
}
@Override
public void addListener(final ILabelProviderListener listener) {
}
@Override
public void dispose() {
}
@Override
public boolean isLabelProperty(final Object element, final String property) {
return false;
}
@Override
public void removeListener(final ILabelProviderListener listener) {
}
}
class AgeRange {
public static final String NONE = "";
public static final String BABY = "0 - 3";
public static final String TODDLER = "4 - 7";
public static final String CHILD = "8 - 12";
public static final String TEENAGER = "13 - 19";
public static final String ADULT = "20 - ?";
public static final String[] INSTANCES = { NONE, BABY, TODDLER, CHILD, TEENAGER, ADULT };
}
- TableView单元格的颜色对话框
- tableview单元格的复用
- 设置tableView的颜色
- tableView的单元格的定制的方法
- JAVAFX的TableView的单元格可编辑
- 设置tableview的cell颜色
- tableview的索引颜色设置
- 单元格颜色渐变的GridView
- js的单元格颜色间隔
- js的单元格颜色间隔
- 设置CListCtrl单元格的颜色
- 颜色对话框的调用
- aspxGridview 根据单元格值得不同,设置单元格字体的颜色
- 改变TableView右侧指示条的颜色
- tableView cell 选中颜色的改变
- tableview列表中的cell单元格有倒计时的情况处理
- 让tableView的单元格分割线紧贴左边
- IOS_简单创建tableView并使用自定义的单元格
- Java内存分配原理
- input输入框不可编辑
- 视口变换矩阵 glviewpoint
- 解决Win7下安装VS2010不显示序列号框的两种方法
- C++著名类库
- TableView单元格的颜色对话框
- 警猫眼App:闲置安卓旧手机DIY变成安防监控云端摄像头
- OSI 七层模型详解
- 面向对象编程(OOP)
- java build.xml
- VS2010各版本下载及注册
- Linux软连接和硬链接
- friso中文分词器
- 第十三章 13.6.2节练习