Java 如何设置JTable的标题?

Java 如何设置JTable的标题?,java,swing,Java,Swing,使用以下示例代码: String column_names[]= {"Serial Number","Medicine Name","Dose","Frequency"}; table_model=new DefaultTableModel(column_names,3); table=new JTable(table_model); 我们想用列名称设置标题,就像上面代码中的列名称一样,但它不起作用。虽然正在创建表,但标题不可见。要查看标题,应将表放在JScrollPane中 panel.ad

使用以下示例代码:

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

我们想用列名称设置标题,就像上面代码中的列名称一样,但它不起作用。虽然正在创建表,但标题不可见。

要查看标题,应将表放在JScrollPane中

panel.add(new JScrollPane(table));
或者,如果您确实不想要滚动窗格,也可以专门将tableHeader添加到面板中(但是:通常您不想要这种行为):

JTable头仅在表格位于滚动窗格中时显示,这通常是您想要执行的操作。如果出于某种原因,需要显示不带滚动窗格的表,可以执行以下操作:

panel.setLayout(new BorderLayout());
panel.add(table, BorderLayout.CENTER);
panel.add(table.getTableHeader(), BorderLayout.NORTH);
实际上,Jtable对象有一个方法,即print()menthod,用于将页眉和页脚作为参数传递给print 这里的headerBox是我在程序中创建的Jcheckbox
这里也有一些jlabel。如果您不需要这意味着从该代码中删除这些内容,并根据指导原则运行程序,那么您应该使用camelCase而不是“\”:tableModel和columnNames。请参阅,可能值得注意的是,在面板的
NORTH
CENTER
中添加标题和表格具有不同的行为。当通过
new JScrollPane(table)
将表格添加到滚动窗格时,标题是固定的,这意味着在滚动时它将保持在顶部。使用基于面板的方法,滚动将标题移出视口,这可能是不需要的。
panel.setLayout(new BorderLayout());
panel.add(table, BorderLayout.CENTER);
panel.add(table.getTableHeader(), BorderLayout.NORTH);
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);
}