Java 具有嵌套标头的JTable
我试图在Jtable中创建嵌套的头文件,就像在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
代码中唯一缺少的是包含表的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);
}
}