Я использую табличное представление Javafx для отображения данных, а также это редактируемая таблица.
Загрузка данных в таблицу через Map, вот как я загружаю таблицу,
ObservableList<Map> configData = FXCollections.observableArrayList();
while(keys.hasNext()){
Map<String, Object> dataRow = new LinkedHashMap<>();
dataRow.put(Column1MapKey, key);
dataRow.put(Column2MapKey, "somevalue";
}
displayTable.setItems(configData);
Здесь, значения объединены, например, тип данных, некоторые значения - String, Number, Boolean.
Моя таблица является редактируемой, после того как я отредактировал значения данных, которые меняются на String.
Например, первая строка, первый столбец - это номер во время загрузки таблицы.
После редактирования примера, введя 55, он преобразуется в строку «55».Ниже приведен код для редактирования таблицы, насколько я понимаю, с использованием StringCoverter, поэтому значения конвертируются.Можно ли получить данные без изменения типа данных.Предположим, что значение редактирования никогда не изменяет пример типа данных, если это число, то данные редактирования также будут числом.
Callback<TableColumn<Map, Object>, TableCell<Map, Object>> cellFactoryForMap = (TableColumn<Map, Object> p) ->
new TextFieldTableCell(new StringConverter() {
@Override
public String toString(Object t) {
return t.toString();
}
@Override
public Object fromString(String string) {
return string;
}
});
secondNameCol.setOnEditCommit(
new EventHandler<CellEditEvent<Map, Object>>() {
@Override
public void handle(CellEditEvent<Map, Object> t) {
t.getTableView().getItems().get(t.getTablePosition().getRow()).put(Column2MapKey, t.getNewValue());
}
}
);
secondNameCol.setCellFactory(cellFactoryForMap);