Я довольно новичок в JavaFX.У меня есть таблица с несколькими столбцами и Edit button
в каждой строке.Всякий раз, когда я нажимаю на Edit
, выбирается 1-я ячейка для редактирования этой строки.Все идет хорошо, но проблема в том, что когда я выбираю строку и щелкаю по ее ячейке, она также переходит в режим редактирования, хотя я не нажимал Edit
.Я думаю, это потому, что я сделал tableView.setEditable(true)
, но я хочу включить редактирование только тогда, когда я нажимаю кнопку Изменить, и только для этой строки, а не другие, когда я дважды щелкаю / один щелчок.Я видел это , но они решили это с помощью всплывающего окна.Я не хочу этогоВ методе initialize()
я пробовал этот способ, но он не работает точно.Кто-нибудь может показать мне правильный способ сделать это, пожалуйста?
tableBuilding.setRowFactory(tv -> {
TableRow<ModelBrBuilding> row = new TableRow<>();
row.addEventFilter(MouseEvent.MOUSE_PRESSED, e -> {
if (e.getButton() == MouseButton.SECONDARY) {
e.consume();
}
});
row.addEventFilter(MouseEvent.MOUSE_PRESSED,event -> {
if ( event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2 ) {
event.consume();
}
});
return row ;
});
и действие моей кнопки выглядит как
EditButton.setOnAction((ActionEvent event)->{
TableRow row = cell.getTableRow();
tableBuilding.requestFocus();
tableBuilding.getSelectionModel().select(row.getIndex());
int i=tableBuilding.getSelectionModel().getSelectedIndex();
tableBuilding.edit(i,colName);
});