在 JTable
中有没有办法创建多个列标题?我的意思是,通常只有一行,但我需要两行具有相同格式(类似于标题),并且组合其中一个标题的某些单元格。
我需要像这样的内容:
Header0 | Header123 | Header4 Header0 | Header1 | Header2 | Header3 | Header4
有什么方法吗?
Nick Meyer先生,感谢您的回复。不过,您地址中的内容有些过时。我使用JRE 1.7运行它时,它并没有像预期那样工作。但是可以进行修改以使其正常工作。下面是我所做的更改:
/*
* add these code in GroupableTableHeader
*/
public void updateUI(){
// setUI(this.getUI());
TableCellRenderer renderer = getDefaultRenderer();
if (renderer instanceof Component) {
SwingUtilities.updateComponentTreeUI((Component)renderer);
}
}
/*
* add these code in GroupableTableHeaderUI in 2 places, you must know where
*/
if (renderer == null) {
renderer = header.getDefaultRenderer();
}
/*
* change the getSize method in ColumnGroup
*/
public Dimension getSize(JTable table) {
Component comp = renderer.getTableCellRendererComponent(
table, getHeaderValue(), false, false,-1, -1);
int height = comp.getPreferredSize().height;
int width = 0;
Enumeration en = v.elements();
while (en.hasMoreElements()) {
Object obj = en.nextElement();
if (obj instanceof TableColumn) {
TableColumn aColumn = (TableColumn)obj;
width += aColumn.getWidth();
// width += margin;
} else {
width += ((ColumnGroup)obj).getSize(table).width;
}
}
return new Dimension(width, height);
}
最终结果如下。
这个可分组的表头示例是一些旧代码,可能能帮助你。
您可以扩展BasicTableHeaderUI
并编写自己的绘制方法实现,在其中可以绘制任何类型的表头。
完成后,使用以下命令将默认表头UI更改为:table.getTableHeader().setUI(MyTableHeaderUI)