每当用户选择TableView上的项目时,我都需要一种方法来选择用户,即使该项目已被选中。
当用户从突出显示的项目中选择不同的项目时tableView.getSelectionModel().selectedItemProperty().addListener
有效,但如果用户再次选择突出显示的项目,则它似乎无法正常工作。< / p>
如何解决这个问题?
答案 0 :(得分:4)
你可以这样做:
tableView.setOnMouseClicked((MouseEvent event) -> {
if(event.getButton().equals(MouseButton.PRIMARY)){
System.out.println(tableView.getSelectionModel().getSelectedItem());
}
});
如果使用可编辑的表格单元格
再次选择突出显示的项目,则上述代码不起作用答案 1 :(得分:0)
如果您只对行上的点击感兴趣,请使用自定义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;
});
答案 2 :(得分:0)
我所知道的最简单的方法:
yourTableView.setOnMousePressed(e ->{
if (e.getClickCount() == 2 && e.isPrimaryButtonDown() ){
int index = yourTableView.getSelectionModel().getSelectedIndex();
System.out.println("" + index);
}
});
将其放入corntroller类中的构造函数或初始化方法...:)