Я пытаюсь получить значение редактируемой таблицы с помощью javaFX Scene builder, но я не могу получить обновленное значение.JavaFx - значения из TableColumn не меняются
У меня есть таблица с 2 столбцами: столбец столбцов и столбцов значений. всякий раз, когда пользователь меняет значение столбца значения, я хочу реагировать.
Но когда я печатаю новое значение изменения, оно всегда отображает значение по умолчанию.
public class MesssageField
{
private final StringProperty fieldName;
private final StringProperty fieldValue;
public MesssageField(String fieldName, String fieldValue) {
this.fieldName = new SimpleStringProperty(fieldName);
this.fieldValue = new SimpleStringProperty(fieldValue);
}
public StringProperty getFieldNameProperty() {
return fieldName;
}
public StringProperty getFieldValueProperty() {
return fieldValue;
}
public void setFieldValue(String fieldValue) {
this.fieldValue.set(fieldValue);
}
public String getFieldName() {
return fieldName.get();
}
public String getFieldValue() {
return fieldValue.get();
}
}
Класс Контроллер имеет:
private static ObservableList<MesssageField> obserListMsgsField;
@FXML
private TableView<MesssageField> msgTableView;
@FXML
private TableColumn<MesssageField, String> fieldNameColumn;
@FXML
private TableColumn<MesssageField, String> fieldValueColumn;
@Override
public void initialize(URL arg0, ResourceBundle arg1)
{
// create List Of fields
obserListMsgsField = FXCollections.observableArrayList();
fieldValueColumn.setCellFactory(TextFieldTableCell.forTableColumn());
// Initialize the person table with the two columns.
fieldNameColumn.setCellValueFactory(cellData -> cellData.getValue().getFieldNameProperty());
fieldValueColumn.setCellValueFactory(cellData -> cellData.getValue().getFieldValueProperty());
}
метод onEditFieldValueCommit присоединен к «при редактировании фиксации»
@FXML
public void onEditFieldValueCommit() {
MesssageField messageField = msgTableView.getSelectionModel().getSelectedItem();
// get field name
String fieldName = messageField.getFieldName();
// get field value
String valueString = messageField.getFieldValue();
// debug print
System.out.print("\n[DEBUG] Field Name = " + fieldName + " = " + valueString);
}
Но выход всегда значение по умолчанию и не измененное значение.
Благодаря
Где вы используете 'onEditFieldValueCommit()'? Именование вашего доступа неверно: 'getFieldNameProperty()' должно быть 'fieldNameProperty()' –