以前一直以为这个控件用法很简单,没什么特别之处,这几天才发现原来变化可以这么多,也许这就是java的魅力吧!
摘抄自:http://blog.sina.com.cn/s/blog_4b2778c701000dc2.html
1、一般我在用是以下两种:
JTable table=new JTable(10,10) //10行10列
JTable table=new JTable(二维数组名,一维数组名) //二维数组作为数据,一维数组作为列名
但这只是最简单的用法,另外还有表格模型,用法如下:
DefaultTableModel dtm = null;
JTable table = null;
dtm = new DefaultTableModel(二维数组名,一维数组名);
table = new JTable(dtm);
有了这个表格模型后,我们可以对表格对更多的事情,比如事件:
增加 TableModelListener 接口后,有个 tableChanged 事件,可以触发点击表格后的事件。
2、要把表格加到一个Frame时只需要用add方法就可以了,但是这样简单的增加表格后,无法显示列名,所以可以先把表格增加到一个滚动面板中,然后再把滚动面板add到Frame里,如:
table = new JTable(data, colNames);
JScrollPane jsc = new JScrollPane(table);
getContentPane().add(jsc);
另外还有一种方法可以让表格正常显示出列名:
用JTable的getTableHeader()方法:
getContentPane().add(table.getTableHeader());
3、表格列宽调整:
表格显示出来后,我们拉各个列的边框,可以调整宽度,几种方法方法可以改变拉列边框时候的变化方式:
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);后面所有的列跟着调整
table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);调整最后一列
table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);调整下一列
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);其他所有列不调整(添加横向滚动栏的关键代码)
table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);默认的
4、表格添加/删除行和列操作:
结合上面的表格模型
//增加行
dtm.addRow(new Vector());
//增加列
dtm.addColumn("字段1");
//删除行
int row = dtm.getRowCount()-1;
if(row>=0)
dtm.removeRow(row);
//删除列,最烦了
int col = dtm.getColumnCount()-1;
if(col>=0)
{
//获取表格模型
TableColumnModel tcm = table.getColumnModel();
//获取表格对象
TableColumn tc = tcm.getColumn(col);
//从模型中删除
tcm.removeColumn(tc);
//设置列数
dtm.setColumnCount(col);
}