Проблемы преобразования типов данных в табличном представлении Javafx - PullRequest
0 голосов
/ 22 ноября 2018

Я использую табличное представление 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);
...