numbercelleditor.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 66 行

JAVA
66
字号
package net.sf.freenote.mindmap;

import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.widgets.Composite;
/**
 * @author levin
 */
public class NumberCellEditor extends TextCellEditor {

	private Class subClass;
	
	public NumberCellEditor() {
		super();

	}

	public NumberCellEditor(Composite parent) {
		super(parent);

	}
	
	public NumberCellEditor(Composite parent,Class subClass) {
		this(parent);
		this.subClass=subClass;
	}	

	public NumberCellEditor(Composite parent, int style) {
		super(parent, style);

	}

	@Override
	protected Object doGetValue() {
		String value=text.getText();
		return getNumberValue(subClass,value);	
	}

	static  Object getNumberValue(Class subClass,String value) {
		if(value == null  || value.equals("")) value ="0";
		if(subClass.isPrimitive()){
			if(short.class == subClass) subClass=Short.class;
			else if(int.class == subClass)subClass=Integer.class;
			else if(long.class == subClass)subClass=Long.class;
			else if(float.class == subClass)subClass=Float.class;
			else if(double.class == subClass)subClass=Double.class;
		}
		//假设相关类都有此方法valueOf(String)
		try {
			return subClass.getMethod("valueOf",new Class[]{String.class}).invoke(null,new Object[]{value});
		} catch (Exception e) {
			e.printStackTrace();
		} 
		return null;
	}

	@Override
	protected void doSetValue(Object value) {
        assert(text != null && (value instanceof Number));
        if(value == null)
        	text.setText("");
        else
        	text.setText(String.valueOf(value));
	}

}

⌨️ 快捷键说明

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