如何为JTable设置标头?

使用以下示例代码:

String column_names[]= {"Serial Number","Medicine Name","Dose","Frequency"}; table_model=new DefaultTableModel(column_names,3); table=new JTable(table_model); 

我们希望使用上面的代码在column_names中设置带有列名的标题,但它不起作用。 虽然表已创建,但页眉不可见。

为了能够看到标题,您应该将表放在JScrollPane中。

 panel.add(new JScrollPane(table)); 

或者你可以专门将tableHeader添加到面板中,如果你真的不想要滚动窗格(但是:通常你不想要这种行为):

 panel.add(table.getTableHeader(), BorderLayout.NORTH); panel.add(table, BorderLayout.CENTER); 

有关JTable和TableModel的更多信息,请参见此处

只有当表位于滚动窗格中时,才会显示JTable标题,这通常是您想要执行的操作。 如果由于某种原因,您需要显示没有滚动窗格的表,您可以执行以下操作:

 panel.setLayout(new BorderLayout()); panel.add(table, BorderLayout.CENTER); panel.add(table.getTableHeader(), BorderLayout.NORTH); 

阅读JTable API并按照“如何使用表”的Swing教程链接获取工作示例。 诀窍是将表添加到JScrollPane。

 MessageFormat header = null; if (this.headerBox.isSelected()) { header = new MessageFormat(gradesLabel.toString()); } MessageFormat footer = null; if (this.footerBox.isSelected()) { footer = new MessageFormat(this.footerField.getText()); } boolean fitWidth = this.fitWidthBox.isSelected(); boolean showPrintDialog = this.showPrintDialogBox.isSelected(); boolean interactive = this.interactiveBox.isSelected(); JTable.PrintMode mode = fitWidth ? JTable.PrintMode.FIT_WIDTH : JTable.PrintMode.NORMAL; try { boolean complete = this.gradesTable.print(mode, header, footer, showPrintDialog, null, interactive, null); if (complete) { JOptionPane.showMessageDialog(this, "Printing Complete", "Printing Result", 1); } else JOptionPane.showMessageDialog(this, "Printing Cancelled", "Printing Result", 1); } catch (PrinterException pe) { JOptionPane.showMessageDialog(this, "Printing Failed: " + pe.getMessage(), "Printing Result", 0); } 

实际上Jtable对象有一个方法,就是print()menthod,它用于传递页眉和页脚作为参数打印这里headerBox是Jcheckbox我在我的程序中创建的,这里也有一些Jlabel。 如果你不需要那意味着从这段代码中删除那些并运行程序