【问题标题】:JOptionPane.showMessageDialog doesn't show up after reading an InputStream. [Java]读取 InputStream 后,JOptionPane.showMessageDialog 不显示。 [爪哇]
【发布时间】:2015-01-19 11:54:55
【问题描述】:

这是我认为导致问题的一段代码。

while((is.read(bytes)) != -1)
            {   
                fos.write(bytes);
            }       

            JOptionPane.showMessageDialog(null,"File Received.","Complete.",JOptionPane.INFORMATION_MESSAGE);
            //System.out.println("File Received.");

现在,当控件到达 JOptionPane 语句时,什么都没有出现,程序甚至不会结束。我不得不手动从任务管理器中结束它。当我尝试注释掉 JOptionPane 语句并使用控制台方法,即 System.out.println() 来显示它工作的消息并且程序正常结束时。我不明白为什么这个 JOptionPane 会导致这个问题。我被困在这里。帮助将不胜感激。感谢期待。

【问题讨论】:

标签: java swing file-io joptionpane


【解决方案1】:

完成后,您必须close 直播。这是工作。当 fos.close() 被执行时,它会通知 EDT 并显示消息。对于System.out.print,它不在EDT中,所以在write操作完成后打印出来。

while((is.read(bytes)) != -1)
            {   
                fos.write(bytes);
            }       
            fos.close();
            JOptionPane.showMessageDialog(null,"File Received.","Complete.",JOptionPane.INFORMATION_MESSAGE);
            //System.out.println("File Received.");

【讨论】:

  • 感谢它的工作。你能告诉我什么是 EDT 或提供一些教程的链接吗?感谢期待。
  • @essaji:以Concurrency in Swing开头。
猜你喜欢
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 2015-08-20
  • 2013-04-07
  • 1970-01-01
  • 2011-08-20
相关资源
最近更新 更多