【问题标题】:JProgressBar updateJProgressBar 更新
【发布时间】:2011-11-07 12:11:47
【问题描述】:

有人可以帮我吗?我会很感激。 我有示例代码:

....
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

【问题讨论】:

  • 重复:stackoverflow.com/questions/7239410/… - 如果您不理解答案,请不要重新开始 ;-) 您在浪费每个人的时间,包括您的 - 坐下来学习 JTable 工作原理的概念...
  • @kleopatra 论坛是人们自助的地方,网上的这些教程不包含我的问题的答案。如果你不帮忙,最好不要说什么,也不要教我该怎么做。
  • 实际上,它们确实如此(如果您将它们与您在第一个线程中得到的答案结合起来)。你对帮助的看法是对的——重点是“他们自己”,其中也包括你自己的努力。

标签: java swing jtable jprogressbar


【解决方案1】:

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

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

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

阅读swing tutorial about tables

【讨论】:

  • +1 有一个很好的例子here
【解决方案2】:

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

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

prog.setValue((int) wartosc);

可能需要用SwingUtilities.invokeLater 包装。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多