我試圖修改TableView 的JavaFX示例代碼,以使用動態方法編輯後更新項目。 整個教程和示例代碼可以在這裏找到:
https://docs.oracle.com/javafx/2/ui_controls/table-view.htmJavaFX,TableView,動態更新編輯後的項目
項目的更新程序性的處理程序:
firstNameCol.setOnEditCommit(
new EventHandler<CellEditEvent<Person, String>>() {
@Override
public void handle(CellEditEvent<Person, String> t) {
((Person) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setFirstName(t.getNewValue());
}
});
我想用動態的東西,而不是setFirstName()。
除了反思之外還有其他可能嗎?
我manged以獲得屬性的名稱:
String propertyName = ((PropertyValueFactory)t.getTableColumn().getCellValueFactory()).getProperty();
我可以設置使用propertyName的莫名其妙中的firstName的價值?
我知道,它可以用反射來完成,但我想使用屬性的特徵。
謝謝 安妮
非常感謝,這是很好的答案。你能告訴我如何避免警告「未經檢查的演員」? 警告:[unchecked]未勾選cast ((WritableValue)ov).setValue(t。的getNewValue()); 需要:一個WritableValue 發現:ObservableValue –
我不這麼認爲:有沒有做到這一點完全的類型安全方式:它實際上是在技術上可能有一個'ObservableValue'這是一個'一個WritableValue '當然,在運行時沒有辦法檢查由於類型擦除導致的類型參數的類型。 –