2017-07-03 6 views
0

フィルタをJTableに適用したいとします。フィルタリング後のjtableモデル

  String text = textField.getText(); 
      rowSorter = new TableRowSorter<>(tableModel); 
      this.getjTable1().setRowSorter(rowSorter); 
      this.getjTable1().removeAll(); 
      if (text.trim().length() == 0) { 
       rowSorter.setRowFilter(null); 
      } else { 
       //String regex = String.format("^%s$", text); 
       if(jCheckBoxExtract.isSelected()){ 
        text="^"+text+"$"; 
       } 
       else{ 
        if(!text.contains(".")||text.contains("$"))text="^"+text; 
       } 
       RowFilter rowFilter = RowFilter.regexFilter(text, 1); 
       rowSorter.setRowFilter(rowFilter); 
      } 
      this.getjTable1().repaint(); 

このコードは機能しますが、今はjtableで値を取得したい場合、モデルは更新されません。 jtableでのモデルの使用は、常に古いモデルですが、フィルタの後の新しいモデルではありません。

+1

よりよいヘルプについては早く、ポスト[MCVE]または[ショート、自己完結、正しい例](のhttp:/ /www.sscce.org/)。テーブルの一部のデータをハードコードします。 –

答えて

1

適切な値を取得するには、テーブルから行を必要とする場合は、必ずこの操作を行います。

model.getSelectedEntry(table.convertRowIndexToModel(table.getSelectedRow())); 
関連する問題