JavaFX Label ändern in aufgerufener AnchorPane

Raikbit

Mitglied
Hi liebe Java-Gemeinde,

bin neu in der Java-Welt und hoffe ihr könnt mir bei meinem kleinen Problem helfen:

ich habe mit JavaFX zwei Fenster erstellt. Wenn ich in Fenster 1 meinen Button drücke soll sich Fenster 2 öffnen ... bis hier kein Problem. Nun soll sich aber gleichzeitig in Fenster 2 ein Label ändern ... offensichtlich Problem. Hier der Code

Java:
@FXML    
protected void onButton1(ActionEvent event) {
    	menuPane1.getChildren().clear();
        try {
        	menuPane1.getChildren().add((Node) FXMLLoader.load(getClass().getResource("Window2.fxml")));
        	InetAddress thisIp = InetAddress.getLocalHost();
        	Label1.setText(thisIp.getHostAddress());
    	} catch (IOException e) {
   			e.printStackTrace();
   		}
    }

Ich vermute das Problem besteht darin, dass mein Button1 im Fenster 1 mit fx:id=menuPane1 nicht das Label1 im Fenster 2 mit fx:id=menuPane1_1 ansprechen kann ... weis jemand Rat wie man das intelligent lösen kann ??
 
hmm Keiner ne Idee... also an sich will ich nur, dass sich das Label aktualisiert wenn das Fenster geöffnet ist ... also ohne das ich noch zusätzlich nen Button dafür definieren muss.
 
Du kannst den FXMLLoader auch über eine Klasseninstanz verwenden - nicht nur Statisch, wie in deinem Beispiel. Somit kannst du den (hoffentlich) im FXML verlinkten Controller mit Parametern steuern, oder deinen eigenen Controller anhängen vorneweg und mit Daten füttern. Das wäre das einfachste.

Die andere Variante, die ich für kleine Aufgabe wie diese sehr oft (egal ob JavaFX oder Android) verwende, ist ein zentraler EventDispatcher, mit dem ich auch über die Grenzen der UIs hinweg Nachrichten verteilen kann, wie etwa "Alle Labels müssen den Text X schreiben". Das ist ein recht primitiver Ansatz und kann sicher eleganter gelöst werden, aber die Impelentierung eines EventDispatcher ist simpel, bzw. es gibt sie schon. Ginge auch mittels PropertyChangeListener...
 

Neue Themen


Zurück
Oben