ProgressMonitor InputStream不工作?

时间:2012-01-15 10:07:05

标签: java swing

我正在尝试一个简单的基于套接字的文件传输程序来包含一个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 
}    

1 个答案:

答案 0 :(得分:3)

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,另一个选项是将它包装到Runnable#Thread,但在这种情况下,输出到GUI必须包装到invokeLater()