Jtable簡單的封裝使用

package project02_Order_management.util;

import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 * 一個JTable工具類 <br>
 * 進行初始化表數據
 * 
 * @author MartinDong
 * 
 */
public class TableUtil {
	/**
	 * 聲明table控件
	 */
	private static JTable jTable;
	/**
	 * 初始化缺省的數據模型
	 */
	private static DefaultTableModel dtm;

	/**
	 * 初始化JTable控件
	 * 
	 * @param rst
	 *            傳入的結果集
	 * @param columnNames
	 *            傳入的表格的表頭
	 * @return 返回jtable控件實體
	 */
	public static JTable initTable(ResultSet rst, String[] columnNames) {

		dtm = new DefaultTableModel(initDate(rst, columnNames), columnNames) {
			public boolean isCellEditable(int row, int column) {
				return false;
			}
		};
		jTable = new JTable(dtm);
		return jTable;
	}

	/**
	 * 初始化缺省的數據模型
	 * 
	 * @param rst
	 *            傳入的結果集
	 * @param columnNames
	 *            傳入的表格的表頭
	 * @return 返回二維數據
	 */
	public static Object[][] initDate(ResultSet rst, String[] columnNames) {
		Object[][] rowDate = null;
		if (rst != null) {
			// 移動光標到最後一行的ResultSet對象。爲了獲取所有的數據行
			try {
				rst.last();
				rowDate = new Object[rst.getRow()][columnNames.length];
				int index = 0;
				// 移到第一條數據韋德是後面的遍歷
				rst.first();
				// 由於需要遍歷從第一個,所以先從第一條記錄向上移動一行數據
				rst.previous();
				while (rst.next()) {
					for (int j = 0; j < columnNames.length; j++) {
						rowDate[index][j] = rst.getObject(j + 1);
					}
					index++;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return rowDate;
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章