我試圖讓使用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);
}
但輸出始終是默認值,而不是改變的值。
感謝
?您訪問的命名是錯誤的:'getFieldNameProperty()'應該是'fieldNameProperty()' – 2014-10-10 09:52:44