GUI程序关闭按钮不起作用
我写了个GUI的程序。在程序运行的时候(比如点击某个按钮,程序做一些写文件操作),点击关闭按钮不起作用了,只能到任务管理器强制关闭。大家知道是为什么吗?程序不运行(比如没开始写文件)的时候是可以关闭的。怎么才可以在程序运行的时候关闭呢?
------解决方案--------------------你试试把写文件的操作放在单独的线程中试试。或许是写文件在主线程,导致主线程等待阻塞。
------解决方案--------------------
人家没写文件之前是可以关闭的,说明加了这句话。我也觉得是阻塞的问题
------解决方案--------------------
“读文件”这个操作是不是通过界面控件触发的?
不要在控件的 listener 方法里直接读,建立一个 SwingWorker 然后 execute() ,在它的 doInBackground() 里读。
------解决方案--------------------SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
doSomething();
}
});
------解决方案--------------------
把文件操作写在doinbackground里面,在listener里面写new Task().execute()即可
private class Task extends SwingWorker<Void, Void>{
@Override
protected Void doInBackground() throws Exception {
//write file
return null;
}
}