如何在javafx中获取所有选定的行数据
问题描述:
有问题! 在javafx表格视图中,我通过Shift + mouseClick或Clt + MouseClick应用了多个选定模式。通过这如何在javafx中获取所有选定的行数据
tblViewCurrentStore.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
tblViewCurrentStore.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
}
});
它在图形用户界面好,但问题是,如果我用这个代码,它给我的最后选择单元格的值,
private void btnDeleteOnAction(ActionEvent event) {
System.out.println(tblViewCurrentStore.getSelectionModel().getSelectedItem().getProductName().toString());
}
出把
SAMSUNG HDD
但当我使用这个代码它给了这个!
private void btnDeleteOnAction(ActionEvent event) {
System.out.println(tblViewCurrentStore.getSelectionModel().getSelectedItems().toString());
}
它给我这个类型的输出
[[email protected], [email protected], [email protected]]
,但是当我选择多行,然后按删除它会显示像第一个所有选定的数据,我需要。
答
有多个问题与您的代码:
tblViewCurrentStore.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
只需要设置一次(因此它的一个setter)。在您的TableView
已经初始化,而不是每次点击之后执行此操作。SelectionModel#getSelectedItem()
明确表示它做什么:
返回当前选择的对象(驻留在所选择的指数位置)。 如果选择了多个项目,这将返回由getSelectedIndex()返回的索引中包含的对象(它始终是最近选择的项目的索引)。
- 最后
SelectionModel#getSelectedItems
返回所有选择的对象(如在爪哇Object
多个)。
所以,如果你想要的名称,可以是这样的:
List<String> names = tblViewCurrentStore.getSelectionModel().getSelectedItems().stream()
.map(ListProduct::getProductName)
.collect(Collectors.toList());
好了,所以......那么,什么是您所遇到的问题?你既没有提出问题也没有说明问题。 – scottb
当我选择多行然后按删除它将显示所有选定的数据。 我该怎么做? –
我无法理解你的问题。你是否说你想要在点击删除按钮时收集选定行的数组? – scottb