1、JTable通常要加到JScrollPane中才能显示带滚动条的表格,如果不加到JScrollPane中,默认不显示表头, 下面的方法可以让不在JScrollPane中的表格显示表头 container.setLayout(new BorderLayout()); container.add(table.getTableHeader(), BorderLayout.PAGE_START); container.add(table, BorderLayout.CENTER);
2、加在JScrollPane中的表格,表头在上部,JTable不支持表头纵向排列,在web页面form表单中经常用标签文本框的格式,在JTable中实现这个效果比较麻烦。下面的两个类可以实现表格的表头纵向排列的效果 RowHeaderTable用来创建带纵向表头的表格,用法类似JTable,不过没有继承JTable, getScrollPane()方法可以得到带JScrollPane的表格,不需要把生成的表格对象重新加到JScrollPane getScrollPane()得到的JScrollPane其实是由两个表格组成的,一个是纵向排列的表头(此处主要用到了JScrollPane的setRowHeaderView()方法),另一个是存储数据的表格
RowHeaderRender是纵向表头的绘制器,以此来设置纵向表头的显示效果
//
表格生成类
import
java.awt.Color;
import
java.awt.Dimension;
import
javax.swing.JScrollPane;
import
javax.swing.JTable;
import
javax.swing.table.DefaultTableModel;
public
class
RowHeaderTable...
{ private JTable dataTable; private JTable headerTable; private DefaultTableModel dataTableModel; private DefaultTableModel headerTableModel; public void setRowHeader(Object[] rowHeader)...{ if(headerTableModel == null)...{ headerTableModel = new DefaultTableModel(0, 1); headerTable = new JTable(headerTableModel); headerTable.setEnabled(false); headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); headerTable.getColumnModel().getColumn(0).setPreferredWidth(500); headerTable.setPreferredScrollableViewportSize(