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

📄 tablecontroller.java

📁 生成与Oracle相关的Ibatis相关配置文件及Java源码
💻 JAVA
字号:
/*
 * Copyright (c) 2008 胜利油田胜利软件有限责任公司. All rights reserved.
 */
package com.victorysoft.swt.base;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;

/**
 * 
 * @author 于景洋
 * @newtime Oct 31, 2008,1:53:54 PM
 * @version 1.0
 * @see
 * @since JDK 1.5.0
 */
public class TableController {
	private Table table;
	private Object[][] data;
	private Control[][] controls;
	private Map<Control, String> map;

	public TableController(Table table, Object[][] data) {
		if (table == null || data == null) {
			throw new IllegalArgumentException("参数不能为空!");
		}
		this.table = table;
		this.data = data;
		this.controls = new Control[data.length][data[0].length];
		this.map = new HashMap<Control, String>();
		for (int i = 0; i < data.length; i++) {
			TableItem item = new TableItem(table, SWT.NULL);
			for (int j = 0; j < data[i].length; j++) {
				item.setText(j, String.valueOf(data[i][j]));
			}
		}
	}

	@SuppressWarnings("unchecked")
	public void setColumnModel(int col, TableEditor editor, Control control) {
		if (control == null) {
			return;
		}
		TableItem[] items = table.getItems();
		Class ownerclass1 = control.getClass();
		Class ownerclass2 = editor.getClass();
		Class[] classes = { Composite.class, int.class };
		Object[] objects = { control.getParent(), control.getStyle() };
		for (int i = 0; i < items.length; i++) {
			Object o1 = Reflector.newInstance(ownerclass1, classes, objects);
			Object o2 = Reflector.newInstance(ownerclass2, table);
			Control tmpcontrol = (Control) o1;
			TableEditor tmpeditor = (TableEditor) o2;
			tmpcontrol.setData(this.data[i][col]);
			tmpcontrol.setVisible(true);
			this.controls[i][col] = tmpcontrol;
			this.map.put(tmpcontrol, i + "_" + col);
			tmpeditor.grabHorizontal = editor.grabHorizontal;
			tmpeditor.grabVertical = editor.grabVertical;
			tmpeditor.horizontalAlignment = editor.horizontalAlignment;
			tmpeditor.verticalAlignment = editor.verticalAlignment;
			tmpeditor.minimumWidth = editor.minimumWidth;
			tmpeditor.minimumHeight = editor.minimumHeight;
			tmpeditor.setEditor(tmpcontrol, items[i], col);
			items[i].setText(col, "");
		}
	}

	/**
	 * 为指定列的指定控件执行指定方法
	 * 
	 * @param col
	 *            列
	 * @param method
	 *            执行的方法名
	 * @param classe
	 *            执行方法的参数类型
	 */
	@SuppressWarnings("unchecked")
	public void setColumnData(int col, String method, Class clazz) {
		for (int i = 0; i < controls.length; i++) {
			Reflector.invokeMethod(controls[i][col], method, clazz, data[i][col]);
		}
	}

	/**
	 * 添加列侦听器
	 * 
	 * @param col
	 *            列
	 * @param method
	 *            添加侦听器的方法名
	 * @param clazz
	 *            侦听方法的参数类型
	 * @param listener
	 *            侦听器(要求侦听器必需使用无参构造器)
	 */
	@SuppressWarnings("unchecked")
	public void addColumnListener(int col, String method, Class clazz,
			Object listener) {
		for (int i = 0; i < controls.length; i++) {
			Object rtn = Reflector.invokeMethod(listener, "getTableController");
			Object instance = Reflector.newInstance(listener.getClass());
			Reflector.invokeMethod(instance, "setTableController", rtn);
			Reflector.invokeMethod(controls[i][col], method, clazz, instance);
		}
	}

	public void fireTableDataChanged(Control control, Object object) {
		String position = this.map.get(control);
		if (position == null || position.length() == 0) {
			return;
		}
		String[] pos = position.split("_");
		int row = Integer.parseInt(pos[0]);
		int col = Integer.parseInt(pos[1]);
		this.data[row][col] = object;
		System.out.println(row + "," + col + "," + object);
	}

	public void show() {
		for (int i = 0; i < data.length; i++) {
			System.out.println(data[i][1]);
		}
	}
}

⌨️ 快捷键说明

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