Мне не понятна логика работы TableView c TableColumn в JavaFX

Всем привет. Потихоньку окунаюсь в дебри Java. Столкнулся со следующей проблемой. Через JavaFX классе Controller создаю таблицу.

    // Таблица с 2 столбцами
    @FXML
    private TableView<Table> allTable;
    @FXML
    private TableColumn<Table, String> outKey;
    @FXML
    private TableColumn<Table, String> outValue;

Через два TextField (один для колонки outKey, другой для колонки outValue) я заношу значения в таблицу.

Использую примитивную инкапсуляцию в классе Table

public class Table {
    private String key;
    private String value;


    public String getKey() {
        return key;
    }
    public void setKey (String key) {
        this.key = key;
    }


    public String getValue () {
        return value;
    }
    public void setValue (String value) {
        this.value = value;
    }
}
    //отработка ввода enterKeyVar
    @FXML
    void PressEnterEnterKeyVar(ActionEvent event) {
        Table table = new Table();
        table.setKey(enterKeyVar.getText());
        key.add(enterKeyVar.getText());
        ObservableList<Table> tables = allTable.getItems();
        tables.add(table);
        allTable.setItems(tables);
        outKey.setCellValueFactory(new PropertyValueFactory<Table, String>("Key"));
        enterKeyVar.clear();
    }

    //отработка ввода enterValueVar
    @FXML
    void PressEnterEnterValueVar(ActionEvent event) {
        Table table = new Table();
        table.setValue(enterValueVar.getText());
        value.add(enterValueVar.getText());
        ObservableList<Table> tables = allTable.getItems();
        tables.add(table);
        allTable.setItems(tables);
        outValue.setCellValueFactory(new PropertyValueFactory<Table, String>("Value"));
        enterValueVar.clear();
    }

И в принципе все работает, НО! при вводе значений в TextField enterKeyVar или TextField enterValueVar, по нажатию Enter, значение как и должно появляется в 0 ячейке нужного столбца и так далее. А соседней ячейке присваивается значение null. В результате если поочередно вводить значения в разные TextField получается следующее Как выглядит таблица если вводить значения поочередно, сначала в один TextField затем в другой TextField

Я не могу понять как сделать так, что бы в соседней колонке не присваивалось значение null и вообще колонки были независимыми друг от друга до тех пор пока мне это не понадобится. Так же буду благодарен если вы мне поможете с ответом можно ли разом очистить целую колонку? Спасибо!!!


Ответы (0 шт):