单击突出显示的项目时,如何检测JavaFX TableView上的选择?
我需要一种方法,在用户每次选择TableView上的项目时获取用户选择,即使该项目已被选中 当用户从高亮显示的项目中选择不同的项目时,单击突出显示的项目时,如何检测JavaFX TableView上的选择?,java,user-interface,javafx,tableview,Java,User Interface,Javafx,Tableview,我需要一种方法,在用户每次选择TableView上的项目时获取用户选择,即使该项目已被选中 当用户从高亮显示的项目中选择不同的项目时,tableView.getSelectionModel().selectedItemProperty().addListener会起作用,但如果用户再次选择高亮显示的项目,则它似乎不起作用 如何修复此问题?您可以执行以下操作: tableView.setOnMouseClicked((MouseEvent event) -> { if(eve
tableView.getSelectionModel().selectedItemProperty().addListener
会起作用,但如果用户再次选择高亮显示的项目,则它似乎不起作用
如何修复此问题?您可以执行以下操作:
tableView.setOnMouseClicked((MouseEvent event) -> {
if(event.getButton().equals(MouseButton.PRIMARY)){
System.out.println(tableView.getSelectionModel().getSelectedItem());
}
});
如果使用可编辑表格单元格再次选择突出显示的项目,则上述代码不起作用。您可以执行以下操作:
tableView.setOnMouseClicked((MouseEvent event) -> {
if(event.getButton().equals(MouseButton.PRIMARY)){
System.out.println(tableView.getSelectionModel().getSelectedItem());
}
});
如果使用可编辑表格单元格再次选择突出显示的项目,则上述代码不起作用如果只对行上的单击感兴趣,请使用自定义的
行工厂
:
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;
});
TableView表=。。。
EventHandler clickListener=evt->{
TableRow row=(TableRow)evt.getTarget();
如果(!row.isEmpty()){
//对非空行执行某些操作
System.out.println(“您单击了”+row.getItem());
}
};
表.setRowFactory(电视->{
TableRow行=新TableRow();
//将单击侦听器添加到行
row.setOnMouseClicked(clickListener);
返回行;
});
如果您只对行上的单击感兴趣,请使用自定义的行工厂
:
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;
});
TableView表=。。。
EventHandler clickListener=evt->{
TableRow row=(TableRow)evt.getTarget();
如果(!row.isEmpty()){
//对非空行执行某些操作
System.out.println(“您单击了”+row.getItem());
}
};
表.setRowFactory(电视->{
TableRow行=新TableRow();
//将单击侦听器添加到行
row.setOnMouseClicked(clickListener);
返回行;
});
我所知道的最简单的方法:
yourTableView.setOnMousePressed(e ->{
if (e.getClickCount() == 2 && e.isPrimaryButtonDown() ){
int index = yourTableView.getSelectionModel().getSelectedIndex();
System.out.println("" + index);
}
});
将其放入corntroller类中的构造函数或初始化方法…:) 我知道的最简单的方法是:
yourTableView.setOnMousePressed(e ->{
if (e.getClickCount() == 2 && e.isPrimaryButtonDown() ){
int index = yourTableView.getSelectionModel().getSelectedIndex();
System.out.println("" + index);
}
});
将其放入corntroller类中的构造函数或初始化方法…:)