【问题标题】:How to get all selected rows data in javafx如何在javafx中获取所有选定的行数据
【发布时间】:2015-08-15 22:14:48
【问题描述】:

有问题!! 在 javafx 表视图中,我通过 Shift+m​​ouseClick 或 Clt+MouseClick 应用了多个选定模式。通过这个

tblViewCurrentStore.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                tblViewCurrentStore.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
            }
        });

在 GUI 上没问题,但问题是,如果我使用此代码,它会给我最后一个选择单元格的值,

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());
    }

它给我这种类型的输出

[List.ListProduct@3a22ea22, List.ListProduct@6d99efa2, List.ListProduct@40fd0f67]

但我需要当我选择多行然后按删除它会显示所有选定的数据,如第一个。

听到是我的 GUI(多选)

【问题讨论】:

  • 好的,那么......那么,您遇到的问题是什么?您既没有提出问题,也没有提出问题。
  • 当我选择多行然后按删除它将显示所有选定的数据。我该怎么做?
  • 我无法理解您的问题。您是说单击删除按钮时要收集选定行的数组吗?
  • 是的,我需要收集一组选定的行。
  • 但是您已经拥有List 的选定行。你显示了调用toString()的结果。

标签: javafx-2 javafx-8 fxml


【解决方案1】:

你甚至可以使用这个:

 ArrayList<YourModel> products = new ArrayList<>(table.getSelectionModel().getSelectedItems());
        for (YourModel model : models) {
            System.out.println(model);
        }

//或

 final List<YourModel> collect = table.getSelectionModel().getSelectedItems().stream().collect(Collectors.toList());

【讨论】:

    【解决方案2】:

    您的代码存在多个问题:

    1. tblViewCurrentStore.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);只需要设置一次(因此它是一个设置器)。在您的 TableView 初始化后执行此操作,而不是在每次点击时执行此操作。

    2. SelectionModel#getSelectedItem() 清楚地说明了它的作用:

    返回当前选定的对象(位于选定的索引位置)。 如果选择了多个项目,这将返回包含在 getSelectedIndex() 返回的索引处的对象(始终是最近选择的项目的索引)。

    1. 最后SelectionModel#getSelectedItems返回所有选定的对象(如Java中的Objects)。

    所以如果你想要名字,你可以这样:

    List<String> names = tblViewCurrentStore.getSelectionModel().getSelectedItems().stream()
      .map(ListProduct::getProductName)
      .collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-14
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多