The result being Process p is still running on the same thread as the gui and nothing is clickable and the jTextAreaConsole
Yes it is doing exactly what p.waitFor(); in your code
waitFor()
Causes the current thread to wait, if necessary, until the process represented by this Process object has terminated.
from
You might want to use SwingWorker like @Andrew Thompson posted Or you can implement Runnable´s run method and start it in a new thread Or even using the Executor class like @hoaz posted
For the callable to run in a separete thread you need to use Executors