Возможно ли связать в FXML, как и в xaml, с контроллером в varibale класса. Что я делаю:FXML: привязка к контроллеру
FXML
<ComboBox fx:id="searchField"
HBox.hgrow="ALWAYS" editable="true" />
<GridPane hgap="5" vgap="5">
<Label text="Nom" />
<Label text="$selecteClient.name"
GridPane.columnIndex="1" />
<Label GridPane.rowIndex="1" text="tél" />
<Label text="$electedClient.phoneNumber"
GridPane.rowIndex="1" GridPane.columnIndex="1" />
<GridPane/>
Controler:
private final List<Client> clients = FXCollections.observableArrayList(ImportingDataService.importClients());
@FXML
private Client selectedClient;
@FXML
private ComboBox<Client> searchField;
@Override
public void initialize(URL location, ResourceBundle resources) {
// Set appDtat client id so it refreshes when client is changed
this.appState.clientViewClientIDProperty().addListener((obs, oldValue, newValue) -> {
selectedClient = ImportingDataService.importClient(newValue.longValue());
});
// Set up combo box
setUpComboBox();
}
private void setUpComboBox() {
searchField.getItems().addAll(clients);
UtilService.autoCompleteComboBoxPlus(searchField, (typedText, client) -> client.getName().contains(typedText));
// Handle selecting clients
searchField.getSelectionModel().selectedItemProperty().addListener((obs, oldValue, newValue) -> {
selectedClient = ImportingDataService.importClient(newValue.getId());
});
}
Мой Client
класс является классом, который имеет String
поля name
и phoneNumber
. и ImportingDataService.importClient
предназначен для импорта данных из базы данных, они работают очень хорошо (я поставил точки останова и проверил это). Проблема в том, что я не знаю, почему клиент Label
s не обновляется, когда я меняю выбор ComboBox
, а selectedClient
действительно меняется. Что я делаю не так?
Это хороший полный ответ, но он работает только с фиксацией опечаток. Наблюдаемый объект не требуется. Благодарю. –
Я возвращаю то, что я сказал. это не работает. на самом деле я добавляю несколько меток, связанных с ними другими атрибутами, но это с использованием модели выбора со списков, и таким образом она работает без объекта наблюдения. другими словами, это не так. –