A propos de la déclaration de Runnable.

Lorsque l'on clique avec la souris ou entre un caractère au clavier, il faut que le logiciel réagisse à cet événement et pour cela il faut le «prévenir». C'est le principe d'un "runnable" : c'est un objet qui contient une fonction qui est appelée lorsque l'événement survient.
Par exemple la méthode void main() est appelée lorsque l'événement «Exécuter» le programme survient. Dans ce cas, ce n'est pas votre "logiciel qui appelle le main" (!), mais bien le main qui est appelé pour lancer votre logiciel.
De même quand, un événement externe survient on peut souhaiter que soit appelé un bout de code qui réagisse à cet événement, cela se définit en déclarant «affecte comme runnable (appel à setRunnable() un nouvel objet de type «Runnable» (construction new Runnable() { ) qui contient la fonction run() qui sera appelée lors de l'événement» ce qui s'écrit en Java:
setRunnable(new Runnable() { public void run() {

// 

// Ici se met le bout de code qui va être appelé lors de l'occurrence de l'événement.

// 

}}); /* Ici on ferme les crochets et la parenthèse. */
On a donc maintenant le logiciel décomposé en plus d'une partie : le programme principal qui fait fonctionner le programme et un ou des bouts de codes qui gèrent les événements.
Remarques:
Bref ce qui est proposé au niveau de javascool c'est le mécanisme Java minimal qui permet d'implémenter ce mécanisme de code réactif à un événement.

Arrêter le runnable.

Comme le runnable est un code qui tourne, indépendemment du void main() il est complètement naturel (mais pas forcément souhaitable !) qu'il continue d'être actif (c'est à dire recevoir des événements après la fin de l'exécution du programme). Pour l'arrêter il faut utiliser la commande:
setRunnable(null);
qui redéfinit le runnable comme null, donc sans effet.

Un exemple minimal de code.

void main() {

// Définition d'un runnable

    setRunnable(new Runnable() { public void run() {
        println("Oh on a cliqué dans l'image en (" + getX() + ", " + getY() +")");
    }});
}
(merci à François Passebon).