创建table,调用无参的构造函数:
结果:
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
TableColumn column
=
table.getColumnModel().getColumn(
0
);//取第一列
为table添加监听:
JTable table= new JTable();
以表头和数据创建表格
//这要求表头和数据都不能为空,不然会抛出NullPointerException,即不能通过这个方法创建出一个只有表头的表格
Object[][] cellData
=
{
{"row1-col1", "row1-col2"},
{"row2-col1", "row2-col2"}}
;
String[] columnNames =
{"col1", "col2"}
;
JTable table = new JTable(cellData, columnNames);



String[] columnNames =

JTable table = new JTable(cellData, columnNames);
为空表格添加列
//这种方法能创建只有表头的表格
//这是实际应用中的一个例子
JTable table=new JTable();
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
//因为只有DefaultTableModel有addColumn的功能,而table.getModel()返回的是一个TableModel类型的对象
//查看API,DefaultTableModel实现了TableModel的接口,为了调用DefaultTableModel的方法,必须强制类型转换
tableModel.addColumn("autoclass1");
tableModel.addColumn("autoclass2");
tableModel.addColumn("diff");
tableModel.addColumn("content");
结果:
为表格添加行(数据):
Object[] o={"1","2","3","4"};
tableModel.addRow(o);
获取第n+1行第m+1列的数据
//n,m都是从0开始
String cellData=(String) tableModel.getValueAt(0,0);
//cellData是第一行第一列的数据值
//getValueAT(a,b)返回的是Object类型的对象
设置第n+1行第m+1列的数据
tableModel.setValueAt("afaf", 0, 0);
统计列数和行数:
tableModel.getRowCount()
tableModel.getColumnCount()
//返回的是int类型的值
设置列宽,行高:

column.setPreferredWidth(
30
);
column.setMaxWidth( 30 );
column.setMinWidth(
30
);
column.setMaxWidth( 30 );

table.setRowHeight(20);
删除列,删除行
table.removeColumn(table.getColumnModel().getColumn(1));
//删除第二列的数据
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
tableModel.removeRow(0);
//删除第一行的数据
清空表的所有行,只保留表头:
//table和tableModel都没有clear()的方法
tableModel.setRowCount(0);
如果连表头也不要了:
tableModel.setColumnCount(0);
JTable的监听:
有很多,先只讲一个我常用到的:
ListSelecitonListener,监听选定特定行,响应相应的事件
例:获取选定行的第4列的值,并把它显示在一个JTextArea里
写一个内部类实现ListSelectionListener接口
ListSelectionModel selectionMode=table.getSelectionModel();
selectionMode.addListSelectionListener(new RowSelectionListener());
效果图: