2010-02-19 118 views
9

下面的示例代码:如何为JTable设置标题?

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

我们要设置页眉与列的名称作为在上面的代码COLUMN_NAMES,但它无法正常工作。尽管表已创建,但标题不可见。

+2

根据指导原则,您应该使用camelCase而不是'_':tableModel和columnNames。请参阅http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html – Fortega 2010-02-19 16:55:12

回答

25

为了能够看到标题,你应该把表放在一个JScrollPane中。

panel.add(new JScrollPane(table)); 

或者你也可以的tableHeader专门添加到面板上,如果你真的不想要一个滚动窗格(但:通常你不希望这种行为):

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

阅读JTable的API并按照“如何使用表格”Swing教程的链接进行操作。诀窍是将表添加到JScrollPane。

2

See here for more information about JTables and TableModels

JTable的头只有当表是一个滚动窗格,这通常是您无论如何要做些什么所示得到。如果由于某种原因,你需要证明没有滚动窗格中的一个表,你可以这样做:

panel.setLayout(new BorderLayout()); 
panel.add(table, BorderLayout.CENTER); 
panel.add(table.getTableHeader(), BorderLayout.NORTH); 
1
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的对象有一个方法,这是印刷()menthod,这是用来传递页眉和页脚作为参数打印 这里的headerBox是Jcheckbox,其中一个是我在我的程序 中创建的,这里也有一些Jlabels。如果您不需要这种方法,请从该代码中删除这些代码并运行该程序