有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在操作仍在进行时关闭JFrame

在我的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);
        }
    });

如果单击关闭按钮,我的窗口将终止当前执行的进程并关闭窗口


共 (1) 个答案

  1. # 1 楼答案

    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();
    }