Определить, нажал ли пользователь на пустые строки в табличном представлении
У меня есть табличное представление, в котором есть несколько строк. Я могу получить выбранный индекс, который выбрал пользователь. Я хочу очистить выбор, когда пользователь нажимает на пустые строки. Как я могу определить, нажал ли пользователь на пустые строки или нет?
Я пробовал ниже вещей.
cSVTableView.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
public void handle(MouseEvent e) {
//int selectedIndex = cSVTableView.getSelectionModel().selectedIndexProperty().get();
if (e.getButton() == MouseButton.SECONDARY && selectedIndex != -1 && selectedIndex <= modelList.size() - 1) {
contextMenu.show(cSVTableView, e.getScreenX(), e.getScreenY());
} else if(e.getButton() == MouseButton.PRIMARY && selectedIndex==-1){
cSVTableView.getSelectionModel().clearSelection();
contextMenu.hide();
} else {
contextMenu.hide();
}
}
});
Я пробовал это, но это не работает
tableView.setRowFactory(new Callback<TableView<MainModel>, TableRow<MainModel>>() {
public TableRow<MainModel> call(TableView<MainModel> param) {
final TableRow<MainModel> row = new TableRow<MainModel>();
row.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<Event>() {
public void handle(Event event) {
if((! row.isEmpty()) && ( ((MouseEvent) event).getButton()==MouseButton.PRIMARY)){
MainModel clickedRow = row.getItem();
System.out.println("clickedRow::" +clickedRow);
}
}
});
return row;
}
});