JavaFX Scene aktuallisieren?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Praktischerweise eignet sich hier die Nutzung von Properties.

Einmal angenommen, du hast diese Model-Klasse:

public class Person {
  private final StringProperty name = new SimpleStringProperty("Klaus");

  public StringProperty nameProperty() {
    return name;
  }

  public final String getName() {
    return nameProperty().get();
  }

  public final void setName(String name) {
    nameProperty().set(name);
  }
}

Im Controller oder im View würdest du dann ein Binding zu der Komponente vornehmen, die die Daten präsentiert.

Beispiel:

public class YourController {
  @FXML
  private Label nameLabel;

  private final Person person;

  public YourController(final Person person) {
    this.person = person;
  }

  @FXML
  public void initialize() {
    nameLabel.textProperty().bind(person.nameProperty());
  }
}

Oder als Expression im FXML:

<Label text="${controller.person.nameProperty}" />

Sobald dein Property seinen Wert ändert, bewirkt das Binding eine automatische Aktualisierung des View.

Entsprechende Property-Typen gibt es für alle möglichen Grundtypen:

  • SimpleBooleanProperty
  • SimpleDoubleProperty
  • SimpleFloatProperty
  • SimpleIntegerProperty
  • SimpleListProperty
  • SimpleLongProperty
  • SimpleMapProperty
  • SimpleObjectProperty
  • SimpleSetProperty
  • SimpleStringProperty