One option is multithreading. It would still do everything, but not in the event thread. for example:
actionPerformed(){
new Thread(){
public void run(){
file = fileChooser.getSelectedFile();
doStuffWithFile(file);
}
}.start()
}