Получите выходные данные от редактируемых фабрик ячеек - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть TableView, в котором есть столбцы с редактируемыми ячейками: TextFieldTableCell, ChoiceBoxTableCell и CheckBoxTableCell.

Они сделаны так:

usernameCol.setCellFactory(TextFieldTableCell.forTableColumn());
usernameCol.setCellValueFactory(new PropertyValueFactory<User,String>("username"));
permissionLevelCol.setCellFactory(ChoiceBoxTableCell.forTableColumn(/*returns a String[]*/usersManager.getPermissionNamesList()));
permissionLevelCol.setCellValueFactory(new PropertyValueFactory<User,String>("permissionLevel"));
giveRefundsCol.setCellFactory(CheckBoxTableCell.forTableColumn(giveRefundsCol));
giveRefundsCol.setCellValueFactory(new PropertyValueFactory<PermissionLevel, Boolean>("giveRefunds"));

Какя могу получить вывод всякий раз, когда пользователь что-то меняет в этих ячейках.Мне нужен какой-то триггер и способ получить новое значение.Ex.печатать новое значение всякий раз, когда оно изменяется

Редактировать:

Моя попытка:

В классе User я помещаю этот метод, который вызывается конструктором:

public void setup(){
    username.addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            System.out.println("changed username to: " + newValue);
        }
    });

    password.addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            System.out.println("changed password to: " + newValue);
        }
    });

    permissionLevel.addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            System.out.println("changed permission level to: " + newValue);
        }
    });
}

К сожалению, это все еще не работает.

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете использовать usernameCol.setOnEditCommit(EventHandler) для прослушивания изменений, которые происходят с ячейкой таблицы, а затем вы можете передать значение в другую функцию, чтобы проверить или сохранить данные, как вам нужно, или связать значение с помощью StringProperty и реализоватьonChangeListener()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...