如何保持Swing GUI开放,但不停止其他编程过程?

时间:2014-05-20 12:31:45

标签: java swing user-interface

当显示Swing GUI窗口时,我的问题出了点问题。

程序正在检查while循环中目录中的新文件。如果有新文件,则会读取它。对文件进行了一些处理。然后是if语句,检查处理是否正确完成。如果不成立,则显示Swing GUI窗口。程序不应该在目录中的新文件之后停止检查。即使在显示Swing窗口时,相同的过程也应继续进行。

while(true){
File f = checknewfile();
   if(newFile){
   processing();
     if(processing.ntgood){
     window.setVisible();
       }else{
       }
   }
}

但那是我的问题,当窗口启动时,程序会在新文件后停止检查,并且新文件无法完成处理。

我该如何解决这个问题? 谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

使用EventQueue.invokeLater启动您的用户界面,这将显示在DispatcherThread而不是您的主线程上

答案 1 :(得分:1)

您可以定义一个javax.swing.Timer来检查这个,让我们说每出现10毫秒的文件并显示您的窗口

或者开始一个新主题,当检查结果为真时,请调用window.setVisible();SwingUtilities.invokeLater()内的invokeAndWait();

答案 2 :(得分:1)

试试这个,

 while(true){
 File f = checknewfile();
  if(newFile){
   processing();
    if(processing.ntgood && !window.isVisible()){
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
         window.setVisible();
      }});
    }else{
   }
  }
 }