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;
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JTable 中,可以使用 BasicTableUI 类来实现单元格的合并。这里提供一个简单的示例代码,演示如何使用 BasicTableUI 来合并单元格: ```java import javax.swing.*; import javax.swing.plaf.basic.BasicTableUI; import javax.swing.table.*; public class JTableMergeDemo extends JFrame { private JTable table; public JTableMergeDemo() { setTitle("JTable Merge Demo"); setSize(400, 300); String[] columnNames = {"Name", "Age", "Gender"}; Object[][] data = { {"Alice", 20, "F"}, {"Bob", 25, "M"}, {"Charlie", 30, "M"}, {"David", 35, "M"}, {"Eva", 40, "F"} }; table = new JTable(data, columnNames); table.setUI(new BasicTableUI()); // 合并第 1 行和第 2 行的第 1 列单元格 mergeCells(0, 0, 1, 0); // 合并第 3 行到第 5 行的第 3 列单元格 mergeCells(2, 2, 4, 2); JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane); } private void mergeCells(int startRow, int startCol, int endRow, int endCol) { TableCellRenderer renderer = table.getCellRenderer(startRow, startCol); Object value = table.getValueAt(startRow, startCol); for (int i = startRow; i <= endRow; i++) { for (int j = startCol; j <= endCol; j++) { table.setCellRenderer(i, j, renderer); table.setValueAt(value, i, j); } } // 合并后的单元格需要重新绘制 table.repaint(); } public static void main(String[] args) { JTableMergeDemo demo = new JTableMergeDemo(); demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); demo.setVisible(true); } } ``` 在上述代码中,我们首先创建了一个 JTable,并设置其 UI 为 BasicTableUI。然后,我们调用 mergeCells 方法来合并单元格。该方法接受四个参数,分别为合并单元格的起始行、起始列、结束行、结束列。在方法内部,我们使用 TableCellRenderer 来获取单元格的渲染器,同时获取第一个单元格的值,并将这个渲染器和值应用到所有需要合并的单元格中。最后,我们需要调用 JTable 的 repaint 方法来重新绘制合并后的单元格。 需要注意的是,使用 BasicTableUI 合并单元格可能会导致一些副作用,例如无法正确地拖动列宽度和行高度。因此,如果需要更高级的单元格合并功能,建议使用第三方组件或自行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值