Java Swing-JTable中的多个列标题?

Java Swing-JTable中的多个列标题?,java,swing,jtable,Java,Swing,Jtable,有没有办法在JTable中创建多个列标题?我的意思是,通常只有一行,但我需要两个格式相同的行(headerlike),并将其中一个标题的一些单元格组合起来 我需要这样的东西: Header0 | Header123 | Header4 Header0 | Header1 | Header2 | Header3 | Header4 校长0 |校长123 |校长4 校长0 |校长1 |校长2 |校长3 |校长4 有什么办法吗?您可以扩展BasicTableHead

有没有办法在
JTable
中创建多个列标题?我的意思是,通常只有一行,但我需要两个格式相同的行(headerlike),并将其中一个标题的一些单元格组合起来

我需要这样的东西:

Header0 | Header123 | Header4 Header0 | Header1 | Header2 | Header3 | Header4 校长0 |校长123 |校长4 校长0 |校长1 |校长2 |校长3 |校长4
有什么办法吗?

您可以扩展
BasicTableHeaderUI
并编写自己的paint方法实现,在其中可以绘制任何类型的头。
在此之后,使用以下命令更改默认标题UI
table.getTableHeader().setUI(MyTableHeaderUI)
示例是一些可以帮助您的旧代码。

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);
  }
以及最终的结果。

我以前用过这个,非常喜欢。“像魔术师一样工作似乎已经死了。”@MatthiasBraun,是的,这是个老问题。你试过在网上搜索吗?我使用了“groupable header”,这是出现的第一个链接: