我正在尝试一个基于套接字的简单文件传输程序,以包含ProgressMonitorInputStream,我的文件传输工作正常。但是progressMonitor从未显示。
我正在将文件从服务器发送到客户端,当它连接时,我的文件正在完美传输,但是只是不明白为什么ProgressMonitor不会出现。
我搜索了一些示例,他们在PMIS中使用了“ this”而不是“ new Jframe()”,但是由于我在main()中,所以它不允许我这样做。
//client
InputStream is = sock.getInputStream();
BufferedInputStream bis = new BufferedInputStream(
new ProgressMonitorInputStream(new JFrame(),"reading",is));
while ((read = bis.read(buffer,0,buffer.length)) != -1) {
//read from socket...now write to file
}
最佳答案
I searched some examples, they used 'this' instead of 'new Jframe()' in PMIS
您已重新阅读有关How to Use Progress Bars的教程,其中有ProgressMonitorInputStream的基本描述
Swing是single threaded,如果要使用
progress
移动,则必须将此Stream
重定向到BackroundTask
,有关JProgressBar
实现的教程SwingWorker,另一种选择是将其包装到,但在这种情况下,必须将输出到GUI的文件包装为Runnable#Thread
关于java - ProgressMonitorInputStream无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8868909/