Make thread run on non EDT (event dispatch thread) thread from EDT
I have a method running on the EDT and within that I want to make it execute something on a new (non EDT) thread. My current code is follows:
@Override
    public void actionPerformed(ActionEvent arg0) {
//gathering parameters from GUI
//below code I want to run in new Thread and then kill this thread/(close the JFrame)开发者_如何学Python
new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
}
You can use SwingWorker to undertake a task on a worker thread off the EDT.
E.g.
class BackgroundTask extends SwingWorker<String, Object> {
    @Override
    public String doInBackground() {
        return someTimeConsumingMethod();
    }
    @Override
    protected void done() {
        System.out.println("Done");
    }
}
Then wherever you call it:
(new BackgroundTask()).execute();
You can create and start a new Java Thread that executes your method from within the EDT thread :
@Override
    public void actionPerformed(ActionEvent arg0) {
        Thread t = new Thread("my non EDT thread") {
            public void run() {
                //my work
                new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
            }
        };
        t.start();
    }
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论