修改JTable单元格的数据

用JTable和DefaultTableModel的setValueAt()方法捣鼓了几天都没法修改单元格的数据。看了一篇帖子之后找到了解决办法。

参考:http://dean-deng.iteye.com/blog/1148172

Swing组件基本都是采用MVC模式,对于JTable来说,数据由Model处理。JTable默认使用AbstractTableModel,如果需要动态改变JTable的值,需要把JTable的Model设置为DefaultTableModel(AbstractTableModel的实现类),其有个setDataVector方法可以用于改变JTable表格的内容。

 

 

Vector data = new Vector();
Vector rowData = new Vector();
Vector columnName = new Vector();
DefaultTableModel defaultTableModel = (DefaultTableModel)table.getModel();    //!创建DefaultTableModel实例!
for(int count = 0;count < numbers.length;count++)
    columnName.add(count);
for(int i = 1;i < numbers.length;i++){
    if(i == 6){
        rowData.add(null);
    }
    rowData.add(numbers[i]);
}
data.add(rowData);
defaultTableModel.setDataVector(data,columnName);         //!把数据交由Model!
 //重新setModel前设置一下table的size,不然会使用默认size
table.setPreferredSize(table.getSize());   
table.setModel(defaultTableModel);                        //!把Model放进table里!

改变表格数据之后,如果创建JTable实例的时候调用过setPreferredSize方法,这时重新调用setPreferrdSize方法是必要的,不然列表可能会发生形变

1、重新调用了setPreferredSize方法

2、没重新调用setPreferredSize方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值