Hola:
Hay muchas formas de hacerlo y las de hilos deberían funcionar.
Lo más simple es que donde quieras continuar muestres un JOptionPane. El JOptionPane muestra una ventana dialogo y detiene la ejecución hasta que la cierres
linea1;
linea2;
JOptionPanel.showMessageDialog("Pulse para continuar",....);
linea3;
linea4;
Otra opción sin meterse en hilos, pero que te puede complicar algo el asunto si hay muchas variables locales que reutilizan las líneas, es hacer varios métodos, uno por conjunto de líneas. El botón debe incrementar un contador cada vez que se pulse y en función del valor del contador llamar al metodo1(), al metodo2(), etc.
Finalmente, metiéndote en hilos, debería funcionar. Elige una variable cualquiera que sea accesible tanto desde el botón como desde las líneas de código. En el código debes poner
synchronized (objeto) {
linea1;
linea2;
objeto.wait();
linea3;
linea4;
objeto.wait();
...
}
La pulsación del botón símplemente debe hacer
synchronized (objeto) {
objeto.notify();
}
Esto, hasta cierto punto puede congelarte la interface de usuario si linea1, linea2, ... tardan mucho en ejecutarse.
Se bueno.