Java Swing中JTable的使用



Java Swing中JTable的使用

写数据库的大作业,难免牵涉到JTable,说一些使用JTable的心得:
JTable的数据源是一个叫做DefaultTableModel的对象,在JTable创建时即可绑定:

DefaultTableModel model=new DefaultTableModel();
JTable table=new JTable(model);

也可在后期使用setModel函数设定:

table.setModel(model);

JTable的所有元素操作可在DefaultTableModel中完成,例如:
加入一列元素:
model.addColumn(“列名”);
该函数还有一个重载,就是
model.addColumn(“列名”,Object[]);
可以将一个object数组以一列加入model中;
DefaultTableModel也支持逐行的加入,有两个函数重载:
addRow(Object[]),addRow(Vector);
函数会将数组或vector中的元素自动对应到column

修改表中元素:setValueAt(Object a,int row,int column);
删除一行:removeRow(int row);


这次做作业,遇到了几个问题,说下解决方法,估计都会遇到:
1.列名无法显示

如果直接将JTable加入一个container中,它的列名是不会显示的,必须将一个包含JTable的JScrollPane加入container,列名才会正确显示
使用方法:

DefaultTableModel model=new DefaultTableModel();
JTable table=new JTable(model);
this.getContentPane().add(new JScrollPane(table));

this是一个JFrame,或者其他container,如JPanel

2.当想用这块地方显示另一个表的内容时,已加入的列名无法删除

我曾经尝试在DefaultTableModel中寻找removeAll函数,失败了,最后,还是使用了比较无奈的方法…
new一个DefaultTableModel ,修改JTable的model绑定
示例:
table.removeAll();
DefaultTableModel model=new DefaultTableModel();
table.setModel(model);
model.addColumn(“房间号”);
model.addColumn(“房间IP”);