swing jtable 图片缓存问题 我有一个JTable 第一列放的是图片 。比如现在表格(0,0)位置插入图片a.jpg(位于磁盘某个位置),然后修改图片a(比如可以删掉a 再把图片b改成a.jpg).再在(1,0)插入图片a(此时图片已被覆盖,样子改变了路径和文件名都没变),但是JTable显示的还是旧图片的样子,我觉得是因为JTabel缓存的问题。求解!如何在修改图片后JTable也能更新显示? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 硬盘上的文件变了,位于内存中的 Image 类型的对象没变。使用定制的 TableModel,更改数据模型以后通过 fire event 的方式通知 view 层重绘。 插入新行(第一列为图片)时图片都是new ImageIcon(filePath)的,并不是使用旧图片对象的内存。TableModel是定制的,添加行后加了三句public void addRow(Object[] obj) { dataVec.add(obj); fireTableRowsInserted(0, dataVec.size()-1); fireTableRowsUpdated(0, dataVec.size()-1); fireTableDataChanged(); }也没用,难道界面显示的是图片的显存···? 问题已解决new ImageIcon(String fileName) 是不行的,难道是因为JVM中String类型存放在字符串池中导致新建的ImageIcon对象都指向了缓存中的旧ImageIcon对象?解决方法:在插入新行时ImageIcon ii = new ImageIcon(Toolkit.getDefaultToolkit().createImage(img.getFileUrl()));addRow(new Object[]{ii,···});求高手解惑。 File如何返回获取的文件名子! 起一个线程,之后让它sleep,为什么main线程也跟着不动了? java安装的问题 如何用java语言设计一个聊天窗口的? 请问各位大哥大姐,学习java对英语要求有多高! 文件复制问题 以下代码如何获取aaa的值,并输出? 如何编辑以下目录以适应windows系统? itext做pdf的问题,急用,在线! solid in java programming 是什么意思? eclipse新建项目的默认编码为何是GBK,而不是UTF-8呢? 文件夹取名或者文件取名按照windows习惯好还是linux习惯好?
硬盘上的文件变了,位于内存中的 Image 类型的对象没变。
使用定制的 TableModel,更改数据模型以后通过 fire event 的方式通知 view 层重绘。
dataVec.add(obj);
fireTableRowsInserted(0, dataVec.size()-1);
fireTableRowsUpdated(0, dataVec.size()-1);
fireTableDataChanged();
}也没用,难道界面显示的是图片的显存···?
解决方法:在插入新行时ImageIcon ii = new ImageIcon(Toolkit.getDefaultToolkit().createImage(img.getFileUrl()));
addRow(new Object[]{ii,···});求高手解惑。