Как выбрать одну ячейку после редактирования коммита? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь сделать запись времени для задач.Задачи отображаются в JavaFX TableView.Я сделал TableView редактируемым, чтобы пользователь мог просто дважды щелкнуть одну ячейку и изменить значения.Так что теперь я пытаюсь настроить выбор после нажатия Enter.Например, если вы закончили с именем задачи, я хочу выбрать одну и ту же ячейку.Вот с чем я борюсь.

Я пытался получить ячейку через SelectionModel.Я попытался получить TablePosition ячейки, в которой я нахожусь. Я также попытался использовать FocusModel, но в итоге просто сфокусировался вместо выбора ячейки.(очевидно)

@FXML
private TableView<Task> taskTableView;

@FXML
private TableColumn<Task, Task> taskTableColumn;

@FXML
private TableColumn<Task, String> durationTableColumn;

@FXML
private TableColumn<Task, String> descriptionTableColumn;


public class TaskController {

   taskTableColumn.setOnEditCommit(e -> {

// Selection Mode is Single, dont worry
   Task selectedTask = taskTableView.getSelectionModel().getSelectedItem();

// 'Edit the cell value' code, not necessary for this

    taskTableView.getSelectionModel().select(selectedTask);

   }

} 

Я ожидал, что ячейка будет выбрана снова, потому что у меня есть свойство для одиночного выбора.Но оказалось, что нужно просто выбрать последнюю ячейку подряд.

Редактировать: Это тоже не сработало для меня.

int selectedIndex = taskEntryTableView.getSelectionModel().getSelectedIndex();
taskEntryTableView.getSelectionModel().select(selectedIndex);

Идея возникла у меня, но я не уверенесли это возможноТак как похоже на методы, которые я пытался до выбора строки, можно ли получить другую позицию из столбца?

1 Ответ

0 голосов
/ 10 апреля 2019

Я получил это сам, теперь мне было не так сложно (^^):

@FXML
private TableView<Task> taskTableView;

@FXML
private TableColumn<Task, Task> taskTableColumn;

@FXML
private TableColumn<Task, String> durationTableColumn;

@FXML
private TableColumn<Task, String> descriptionTableColumn;


public class TaskController {

   taskTableColumn.setOnEditCommit(e -> {

// Selection Mode is Single, dont worry
   Task selectedTask = taskTableView.getSelectionModel().getSelectedItem();

// 'Edit the cell value' code, not necessary for this

// the "selectedTask" just actually just contains the row, by mentioning the column itself, it gets the x and y position. 
    taskTableView.getSelectionModel().select(selectedTask, taskTableColumn);

   }

} 
...