java - 如何在操作仍在进行时关闭 JFrame
问题描述
单击运行按钮后,在我的 Swings Windows 应用程序中执行了一些操作。如果我在操作仍在进行时尝试关闭窗口,则关闭操作不起作用。完成流程执行后,只有关闭窗口操作才有效。否则它不会响应关闭操作。
我已经尝试过下面提到的代码。但是那个并没有停止工作
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
or
System.exit(1);
or
setDefaultCloseOperation(EXIT_ON_CLOSE);
or
setDefaultCloseOperation(3);
or
dispose();
}
});
JButton jb = new JButton("Run");
add(jb);
jb.setBounds(10, 30, 100, 30);
setSize(150,150);
setLayout(null);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
// some operations . For Example here i'm add 1E5 data,s in my collection object. again i will replace data's places of each element.
for(int i=0;i<1E5;i++)
{
ll.add(i);
}
for(int i=0;i<1E5;i++)
{
ll.add(1,i);
}
for(int i=0;i<1E5;i++)
{
ll.add(0,i);
}
System.out.println(ll);
}
});
如果我单击关闭按钮,我的窗口将终止当前执行的进程并关闭窗口。
解决方案
class MyThread extends Thread {
public void run() {
// some operations . For Example here i'm add 1E5 data,s in my collection object
..
..
}
}
然后在您的 JButton actionlistener 上的 actionPerformed 方法中,您只需启动线程:
public void actionPerformed(ActionEvent e) {
new MyThread().start();
}
推荐阅读
- python - 如何使用 PDFMiner 在 Python 中提取 PDF 中文本的字体颜色?
- enterprise-architect - 无法将构造型添加到工具箱页面
- graphql - 用于过滤数据库文档的 GraphQL 查询
- python - 停止 Pika (RabbitMQ) 中 SelectConnection 的 ioloop 阻塞
- reactjs - 有什么办法可以通过 react-router 克服 history.push 自动解码?
- sql-server - MS SQL 服务器出现错误 18456 严重性 14 状态 8
- vue.js - Vue.js 滚动对齐到组件
- mysql - 相当于mysql中的嵌套if语句?
- sql - oracle中数据检索太慢
- python - 如何将 .netrc 文件附加到 python 请求获取方法?