2015-08-15 47 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()); 
    
    相關問題