Powiązanie z właściwościami obiektu, który sam jest zawinięty w właściwość, wydaje się być czymś, co można zrobić w typowych aplikacjach, czy jest lepszy sposób na to, aby w JavaFX działał Robię poniżej?Powiązanie z właściwościami JavaFX obiektu, który można zmienić
Kilka dodatkowych szczegółów do wyjaśnienia: Chcę utworzyć GUI w JavaFX 2.2, do zarządzania wieloma przedmiotami. Stworzyłem mały przykład, aby przetestować wszystko, w czym przedmiotami są osoby. Zestaw osób jest pokazany w niestandardowy sposób (nie lista lub drzewo, ale nie sądzę, że ma to znaczenie) i mogę wybrać jeden.
W panelu bocznym mogę edytować aktualnie wybraną osobę. Aktualizacje są natychmiast widoczne w zestawie osób, a po wybraniu innej osoby panel edycji jest aktualizowany.
Dwukierunkowe wiązanie JavaFX wydaje się idealne do tego celu. Obecnie mam to dla fx: kontroler z „osoba” Okienka edycji:
public class PersonEditor implements ChangeListener<Person> {
@FXML private TextField nameField;
@FXML private TextField ageField;
@FXML private TextField heightField;
public void setSelection(ObjectProperty<Person> selectedPersonProperty) {
selectedPersonProperty.addListener(this);
}
@Override
public void changed(ObservableValue<? extends Person> observable, Person oldVal, Person newVal) {
if (oldVal != null) {
nameField.textProperty().unbindBidirectional(oldVal.nameProperty());
ageField.textProperty().unbindBidirectional(oldVal.ageProperty());
heightField.textProperty().unbindBidirectional(oldVal.heightProperty());
}
if (newVal != null) {
nameField.textProperty().bindBidirectional(newVal.nameProperty());
ageField.textProperty().bindBidirectional(newVal.ageProperty());
heightField.textProperty().bindBidirectional(newVal.heightProperty());
}
}
}
Zastanawiam się, czy jest ładniejszy sposób, być może coś w JavaFX do wiążą się właściwości obiektu, które mogą zmienić ? Nie podoba mi się to, że muszę ręcznie usunąć wszystkie właściwości, czuję się jak duplikat kodu. A może to tak proste, jak może być w JavaFx?
Hmmm, tak, widzę, że chodzi o wiązanie, które nie zawsze jest potrzebne. Ale w takim przypadku znalazłbym się w podobnej sytuacji: wprowadziłbym go, tworząc 2 metody pomocnicze, 1 metodę "selectedPersonToFields" i 1 metodę "fieldsToSelectedPerson". W obu kopiujesz dane ze zbioru pól do zestawu właściwości osoby (lub odwrotnie). Jeszcze raz, to 2 razy prawie ten sam kod! Jakoś chciałbym tego uniknąć w obu sytuacjach.Czuję, że może być bardziej elegancko. Szukam jakiejś istniejącej metody JavaFX, aby to zrobić, lub jakiegoś wzorca lub czegoś, co mogę zaimplementować, aby to zrobić ... –