1

有人可以帮助我吗?我将感激不尽。我有示例代码:

....
int sizeFile;
RandomAccessFile raf;
InputStream in; 
int val= 0; 
int downloaded= 0;                    
while((val=in.read(buff)) != -1)
{               
raf.write(buff, 0, val);    
downloaded+=  val;              
float wartosc = ((float) downloaded/ sizeFile) * 100;
prog.setValue((int)wartosc);                
}

我的问题是 jprogressbar 如何放入单元格表中,更新变量wartosc

4

2 回答 2

3

您的 JTable 的表模型应该有一个“下载进度”列,其中包含下载百分比值(即 0 到 100 之间的数字)。

您应该将自定义表格单元格渲染器与此列相关联。渲染器将​​使用进度条来显示表格单元格中包含的百分比(即value的唯一方法的参数TableCellRenderer)。

要更新进度条,您应该为表格模型中的相应单元格设置一个新值。然后,此更改将触发 a TableModelEvent(使用 a 自动完成,但如果您是子类化,则DefaultTableModel必须调用)。该事件将被 JTable “捕获”,JTable 将刷新该值,从而使用要显示的新值调用您的渲染器。fireTableCellUpdatedAbstractTableModel

阅读有关表格的摇摆教程

于 2011-08-31T10:41:43.423 回答
2

不完全确定我理解你的问题,但这里有一些开始......

假设您没有在调度线程上进行下载(这将是一个坏主意),则以下调用:

prog.setValue((int) wartosc);

可能需要包裹在一个SwingUtilities.invokeLater.

这是因为 Swing 是线程不安全的,需要从单个线程访问 Swing 框架的对象。

于 2011-08-31T10:25:23.237 回答