我用filewriter将jTable中的内容导出到dat文件,然后用randomaccessfile将文件写入。我是直接在原来的jTable1的行向量下加入导入的数据,然后:
model1.fireTableStructureChanged();
jTable1.revalidate();
jTable1.repaint();
但是出现了3个问题,
一是原先导出的中文导入后变成乱码。
二是原表格列间的距离都改变了,因为原表格我是用了TableColumn的setMaxWidth,setMinWidth限定了列间的距离。
三是原表格中的jComboBox的列导入文件后都变成了普通的可编辑的单元格了。
model1.fireTableStructureChanged();
jTable1.revalidate();
jTable1.repaint();
但是出现了3个问题,
一是原先导出的中文导入后变成乱码。
二是原表格列间的距离都改变了,因为原表格我是用了TableColumn的setMaxWidth,setMinWidth限定了列间的距离。
三是原表格中的jComboBox的列导入文件后都变成了普通的可编辑的单元格了。
一:不应该用randomaccessfile读,这类还是偏向于处理字节的,更适合用来读取二进制的内容,我现在用bufferdreader读已经没问题了。
二:将TableColumn重设一遍。
三:将defalutCellEditor重设一遍。
读写格式应该一致。比如你存一个int,按照四个byte去读,那肯定就乱了。
TableColumn重设一遍。你是说每一列的宽度?三:将defalutCellEditor重设一遍。
恩,这倒是。不过我知道你那里是否必须使用
jTable1.revalidate();
jTable1.repaint();
一般这两个方法用的不多。通常通知model改变就可以。如果说model的变动很大,可以重新写一个
table.setModel(model);只是一种方法和思路。
呵呵,不错嘛,这么快就解决了。加油。