当显示Swing GUI窗口时,我的问题出了点问题。
程序正在检查while循环中目录中的新文件。如果有新文件,则会读取它。对文件进行了一些处理。然后是if语句,检查处理是否正确完成。如果不成立,则显示Swing GUI窗口。程序不应该在目录中的新文件之后停止检查。即使在显示Swing窗口时,相同的过程也应继续进行。
while(true){
File f = checknewfile();
if(newFile){
processing();
if(processing.ntgood){
window.setVisible();
}else{
}
}
}
但那是我的问题,当窗口启动时,程序会在新文件后停止检查,并且新文件无法完成处理。
我该如何解决这个问题? 谢谢你的帮助!
答案 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{
}
}
}