2015-08-15 261 views
1

有问题! 在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]] 

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

听到的是我的GUI(带多选) enter image description here

+0

好了,所以......那么,什么是您所遇到的问题?你既没有提出问题也没有说明问题。 – scottb

+0

当我选择多行然后按删除它将显示所有选定的数据。 我该怎么做? –

+0

我无法理解你的问题。你是否说你想要在点击删除按钮时收集选定行的数组? – scottb

回答

0

有多个问题与您的代码:

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

  2. SelectionModel#getSelectedItem()明确表示它做什么:

返回当前选择的对象(驻留在所选择的指数位置)。 如果选择了多个项目,这将返回由getSelectedIndex()返回的索引中包含的对象(它始终是最近选择的项目的索引)。

  • 最后SelectionModel#getSelectedItems返回所有选择的对象(如在爪哇Object多个)。
  • 所以,如果你想要的名称,可以是这样的:

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