每当用户选择一行时,我都会使用以下代码。有没有什么方法可以从所选行中获取第一个或所选单元格?我需要选定的单元格,因为我希望将该节点传递给ControlsFX POPOVER.show()
方法。我需要popover box
显示在tableview
中所选行的正上方。
tableView.setRowFactory(tv -> {
TableRow<ObservableList> row = new TableRow<>();
row.setOnMouseClicked(event -> {
if (event.getClickCount() == 2 && (!row.isEmpty())) {
popover.show(cellNodeHere<-);
}
});
return row;
});
}
答案 0 :(得分:1)
在上一个问题中,只需将行工厂更改为此。您可以使用getCellData
。
Label label = new Label("click a row");
tableView.setRowFactory(tv -> {
TableRow<ObservableList> row = new TableRow<>();
row.setOnMouseClicked(event -> {
if (event.getClickCount() == 2 && (!row.isEmpty())) {
//if you want the y coord of the row in the scene
double y = ((TableRow)event.getSource()).getLocalToSceneTransform().getTy();
int idx = tableView.getSelectionModel().getSelectedIndex();
label.setText(idx
+ " <-tbl row, idx in items-> "
+ items.indexOf(tableView.getSelectionModel().getSelectedItem())
+ ", first cell-> "+((TableColumn)tableView.getColumns().get(0)).getCellData(idx));
}
});
return row;
});
答案 1 :(得分:1)
我的解决方案是将行用作节点并转动箭头位置
popup.setArrowLocation(PopOver.ArrowLocation.BOTTOM_CENTER);
这样,弹出窗口就会显示在TableRow
上方