I'm sending it to a JTextArea and I'm also reading the String from a file. Should have mentioned that to begin with, sorry. I tried flushing the BufferedReader and that hasn't worked.

Are you doing the sleep() in the event handler? You can't do that. The GUI needs the event dispatching thread to do stuff, so it won't do anything until you are done.

The strings won't appear until your event handler is done. In order to have the effect of waiting a few seconds, you need to schedule for an event seconds later, return from the event handler, and have you new scheduled event handler print the other string.

I'm sending it to a JTextArea and I'm also reading the String from a file. Should have mentioned that to begin with, sorry. I tried flushing the BufferedReader and that hasn't worked.

Are you doing the sleep() in the event handler? You can't do that. The GUI needs the event dispatching thread to do stuff, so it won't do anything until you are done.

The strings won't appear until your event handler is done. In order to have the effect of waiting a few seconds, you need to schedule for an event seconds later, return from the event handler, and have you new scheduled event handler print the other string.

When you make any calls to other methods within an Event Dispatch Thread (EDT)... effectively those calls and their code will be executed by the EDT.

Bottom line : You need to either have the results returned or stored in another DS that can be accessed then printed after the EDT finishes handling the event OR
You have to invoke the method on a seperate thread. I think you will want to do the former option.