Swing jtable 怎么合并单元格 合并行 合并列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swing jtable 怎么合并单元格 合并行 合并列相关的知识,希望对你有一定的参考价值。

搞成这个样子的,代码详细一点,谢谢

首先,tableUI中有几个重要的方法:

printGrid 画出单元格的框框
paintCell 画出单元格的那个矩形
columnAtPoint(一个点) 返回指定位置属于表格中的哪个列
rowAtPoint(一个点) 返回指定位置属于表格中的哪个行
而这两个功能的实现都依赖于getCellRect这个方法,getCellRect的作用是返回位于 row行 column列的单元格矩形,返回的矩形的大小决定了画出来的单元格的大小。
所以问题就简单了,只要创造一种新的数据结构,把合并信息加进去,然后重载getCellRect方法,使其返回的值体现了合并单元格。当用户选择单元格时,对于被覆盖的单元格,重载rowAtPoint和columnAtPoint方法,使得其返回其所在的合并单元格的起始行列。大体上就是这样了。
参考技术A 建议不要弄,我做考勤系统的时候试过,并且合并行和列是动态的,但是会出现各种问题,各种异常,最后就放弃了,可以试试html中table本回答被提问者采纳

合并 JTable 中的单元格

【中文标题】合并 JTable 中的单元格【英文标题】:Merging cells in JTable 【发布时间】:2010-10-03 08:48:05 【问题描述】:

是否可以合并 JTable 对象的某些单元格?

(来源:codeguru.com)

如果无法通过 JTable 实现,那么最好的方法是什么。谢谢。

【问题讨论】:

【参考方案1】:

您可以使用合并原始 TableModel 的两列的 TableModel 来实现 JTable。

class Model2 extends AbstractTableModel

private TableModel delegate;
public Model2(TableModel delegate)
 
 this.delegate= delegate;
 

public int getRowCount()  return this.delegate.getRowCount();
public int getColumnCount()  return this.delegate.getColumnCount()-1;
public Object getValueAt(int row, int col)
 
 if(col==0) return ""+delegate.getValueAt(row,col)+delegate.getValueAt(row,col+1);
 return delegate.getValueAt(col+1);
 
(...)

【讨论】:

我说的是合并“单元格”,而不是列。【参考方案2】:

不是开箱即用的。 Here is an example 支持合并任意单元格。 This page 有几个带有跨单元格的表格示例。当然它是旧的,你得到你付出的代价。如果付费软件是一个选项,JIDE Grids 有一些非常好的 Swing table 支持,包括custom cell spans。

【讨论】:

这些 URL 中有 4 个是 404。:( -1 两年后没有修复:(

以上是关于Swing jtable 怎么合并单元格 合并行 合并列的主要内容,如果未能解决你的问题,请参考以下文章

合并 JTable 中的单元格

java的swing编程,Jtable的单元格如何赋值

如何在 DefaultTableModel/JTable 中合并单元格?

JTable单元格自动换行

在HTML表格中怎么合并单元格?

js动态添加行怎么合并单元格