Singletonii sunt răi, ce vă așteptați? ;)
Poate că cea mai cuprinzătoare abordare ar fi să încărcați cea mai mare parte a applet-ului într-un alt încărcător de clasă (utilizați java.net.URLClassLoader.newInstance). Apoi folosiți un WeakHashMap pentru a asocia încărcătorul de clasă cu un applet. Dacă ați putea împărți majoritatea codului într-un încărcător de clasă obișnuit (ca părinte al fiecărui încărcător de clasă pe un applet) și în codul de bază al applet-ului, aceasta ar fi mai rapidă, dar mai multă muncă.
Alte hacuri:
Dacă aveți acces la orice componentă, puteți utiliza Component.getParent în mod repetat sau SwingUtilities.getRoot.
Dacă vă aflați într-un thread de instanță pe un applet, puteți configura un ThreadLocal.
Din EDT, puteți citi evenimentul curent din coadă (java.awt.EventQueue.getCurrentEvent ()) și, eventual, puteți găsi o componentă din acesta. Alternativ, împingeți un EventQueue cu o metodă dispatchEvent suprascrisă.