Java 具有嵌套标头的JTable

Java 具有嵌套标头的JTable,java,swing,header,jtable,Java,Swing,Header,Jtable,我试图在Jtable中创建嵌套的头文件,就像在Jtable中一样 但这不起作用 下面是我如何尝试使用来自的类来完成此操作的代码: 代码中唯一缺少的是包含表的JFrame的设置。我正在运行您的示例代码,如下所示: import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumnMod

我试图在Jtable中创建嵌套的头文件,就像在Jtable中一样 但这不起作用

下面是我如何尝试使用来自的类来完成此操作的代码:


代码中唯一缺少的是包含表的JFrame的设置。我正在运行您的示例代码,如下所示:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class HeaderTableExample extends JFrame {
    public HeaderTableExample() {
        super("this is a title");
        DefaultTableModel tableModel = new DefaultTableModel();
        tableModel.setDataVector(
                new Object[][]{},
                new String[]{
                        "Klient", "Numer dokumentu", "E2", "Jedn.", "EUR", "H1", "E2", "Jedn.", "EUR", "H1"
                });

        JTable jTable1 = new javax.swing.JTable(tableModel) {
            @Override
            protected JTableHeader createDefaultTableHeader() {
                return new GroupableTableHeader(columnModel);
            }
        };

        TableColumnModel cm = jTable1.getColumnModel();
        ColumnGroup documentGroup = new ColumnGroup("Dokumenty");
        ColumnGroup sendedGroup = new ColumnGroup("Wysłane");
        ColumnGroup returnedGroup = new ColumnGroup("Zwracane");

        documentGroup.add(cm.getColumn(0));
        documentGroup.add(cm.getColumn(1));

        sendedGroup.add(cm.getColumn(2));
        sendedGroup.add(cm.getColumn(3));
        sendedGroup.add(cm.getColumn(4));
        sendedGroup.add(cm.getColumn(5));

        returnedGroup.add(cm.getColumn(6));
        returnedGroup.add(cm.getColumn(7));
        returnedGroup.add(cm.getColumn(8));
        returnedGroup.add(cm.getColumn(9));

        GroupableTableHeader header = (GroupableTableHeader) jTable1.getTableHeader();
        header.addColumnGroup(documentGroup);
        header.addColumnGroup(sendedGroup);
        header.addColumnGroup(returnedGroup);

        JScrollPane scroll = new JScrollPane(jTable1);
        getContentPane().add( scroll );
        setSize(400, 120);
        scroll.setViewportView(jTable1);
    }

    public static void main(String[] args) {
        HeaderTableExample frame = new HeaderTableExample();
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.setVisible(true);
    }
}

什么不起作用?代码的其余部分是什么?不做任何更改​​在表中,似乎没有嵌套的头。具体来说,什么不起作用?通过imgur发送一个屏幕截图,或者粘贴其余的代码-当我不知道什么不起作用时,不可能帮助你。好的,所以标题应该是这样的,但它不起作用,它看起来是这样的。@Mariola我需要查看代码的其余部分,以便能够给您任何答案-您发布的代码目前运行正常,所以问题一定在其他地方。
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class HeaderTableExample extends JFrame {
    public HeaderTableExample() {
        super("this is a title");
        DefaultTableModel tableModel = new DefaultTableModel();
        tableModel.setDataVector(
                new Object[][]{},
                new String[]{
                        "Klient", "Numer dokumentu", "E2", "Jedn.", "EUR", "H1", "E2", "Jedn.", "EUR", "H1"
                });

        JTable jTable1 = new javax.swing.JTable(tableModel) {
            @Override
            protected JTableHeader createDefaultTableHeader() {
                return new GroupableTableHeader(columnModel);
            }
        };

        TableColumnModel cm = jTable1.getColumnModel();
        ColumnGroup documentGroup = new ColumnGroup("Dokumenty");
        ColumnGroup sendedGroup = new ColumnGroup("Wysłane");
        ColumnGroup returnedGroup = new ColumnGroup("Zwracane");

        documentGroup.add(cm.getColumn(0));
        documentGroup.add(cm.getColumn(1));

        sendedGroup.add(cm.getColumn(2));
        sendedGroup.add(cm.getColumn(3));
        sendedGroup.add(cm.getColumn(4));
        sendedGroup.add(cm.getColumn(5));

        returnedGroup.add(cm.getColumn(6));
        returnedGroup.add(cm.getColumn(7));
        returnedGroup.add(cm.getColumn(8));
        returnedGroup.add(cm.getColumn(9));

        GroupableTableHeader header = (GroupableTableHeader) jTable1.getTableHeader();
        header.addColumnGroup(documentGroup);
        header.addColumnGroup(sendedGroup);
        header.addColumnGroup(returnedGroup);

        JScrollPane scroll = new JScrollPane(jTable1);
        getContentPane().add( scroll );
        setSize(400, 120);
        scroll.setViewportView(jTable1);
    }

    public static void main(String[] args) {
        HeaderTableExample frame = new HeaderTableExample();
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        frame.setVisible(true);
    }
}