Also. Habe es mir angeschaut und finde es ja schon mal ok, dass du das mit dem FXMLLoader#setController verstanden hast. Ich, jedoch, würde nie so arbeiten.
Aber: Ich verstehe dein Problem noch nicht recht. Was für eine GUI willst du jetzt starten? Dein Projekt enthält nur die eine GUI-Klasse (Controller, FXML)...
Was ich denke, was du meinst: Du setzt in der Main-Klasse mithilfe des hässlichen Singletons den Text. Dummerweise wahrscheinlich, bevor das JavaFX-Toolkit selbst (indem du sie mit Application#launch startest) bereit ist. Denn wenn du die beiden Text-Methoden ans Ende der Klasse "GUI" hängst, geht es.
Wenn du etwas durch den Code des JDK gehst, siehst du, dass #launch einen Thread abspaltet - das wird die Wurzel des Problems sein.
Grundsätzlich würde ich es aber erst mal so umschreiben, dass du keine Singleton-Instanzen der Controller irgendwo liegen hast. Wenn, dann verwende entweder einen zentralen Event-Bus (ja, ein einzelne Instanz wäre schon nötig), an dem sich die GUI anmelden kann und auf Events reagieren kann.
Oder ein zentrales Model (mit JavaFX-Properties), dass du im FXMLLoader an die Controller-Instanzen übergeben kannst, oder per Dependency Injection reinbringst.