Filozofia Swinga jest taka, że mamy drzewo komponentów i możemy sobie je odcinać/ przypinać praktycznie gdzie chcemy. Możemy przelecieć sobie to drzewo w taki sposób jaki się nam podoba. Zwykłe new JCośTam() nic nie zmieni, dopiero trzeba wywołać .add(new JCośTam()) do jakiegoś elementu, żeby to się gdzieś pokazało.
W twoim przypadku jednak powinieneś zrobić sobie klasę rozszerzającą JFrame, dać tam metodę ustawcośtam(String innecoś). Najlepiej też zsubclassować cały JPanel czy tam jakieś window i dać metodę getCośTamFrame().
Wtedy zamiast zmiennych statycznych, singletonów itp byłoby po prostu coś w stylu getParent().getCośTamFrame().ustawCośTam(naszString).
ZTCP Matisse radzi sobie elegancko z klasami dziedziczącymi po JPanel i JCośTamInnego.
Książek do Javy nie czytałem, ale może "Thinking in Java"?