javaFX 장면 작성기를 사용하여 편집 가능한 테이블의 값을 가져 오려고하지만 업데이트 된 값을 가져올 수 없습니다.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()'여야합니다 –