再次选择突出显示的项目,则上面的代码不起作用
每次用户在TableView上选择项目时,我都需要一种方法来获得用户选择,即使该项目已经被选择。
当用户选择与高亮显示的不同的项目时,tableView.getSelectionModel().selectedItemProperty().addListener
起作用,但如果用户再次选择高亮显示的项目,它似乎不起作用。
这将如何解决?
您可以这样做:
tableView.setOnMouseClicked((MouseEvent event) -> {
if(event.getButton().equals(MouseButton.PRIMARY)){
System.out.println(tableView.getSelectionModel().getSelectedItem());
}
});
如果您使用可编辑的表格单元格
如果您只对行上的点击感兴趣,请使用自定义rowFactory
:
TableView<Item> table = ...
EventHandler<MouseEvent> clickListener = evt -> {
TableRow<Item> row = (TableRow<Item>) evt.getTarget();
if (!row.isEmpty()) {
// do something for non-empty rows
System.out.println("you clicked " + row.getItem());
}
};
table.setRowFactory(tv -> {
TableRow<Item> row = new TableRow<>();
// add click listener to row
row.setOnMouseClicked(clickListener);
return row;
});
我所知道的最简单的方法:
yourTableView.setOnMousePressed(e ->{
if (e.getClickCount() == 2 && e.isPrimaryButtonDown() ){
int index = yourTableView.getSelectionModel().getSelectedIndex();
System.out.println("" + index);
}
});
将其放入corntroller类中的构造函数或initialize方法中…:)