2016-05-24 41 views
0

我有以下方法获取可见行的总和列

public void availableCapacity(){ 
    double total = 0.0; 
    double total1 = 0.0; 
    for (int i = 0; i < tableR.getRowCount(); i++){ 
     double amount1 = Double.parseDouble((String) tableR.getValueAt(i, 10)); 
     double amount = Double.parseDouble((String) tableR.getValueAt(i, 11)); 
     total += amount; 
     total1 += amount1; 
    } 
    System.out.println(total +" " + total1); 
    sumavailbleField.setText(Double.toString(total)); 
} 

这目前得到的所有行的第10列和11列的总和这工作得很好。不过,我有一个用户输入字段过滤表。然后,我想总结过滤的行,我该如何去做这件事?

+0

用户输入字段如何过滤行?你从哪里获得价值观? –

+0

@ Daniel Widdis这些值来自api,数据全部列表为JTable模型。用户只需输入日期和时间到JTextField中,根据输入过滤行。 – Ingram

回答

0

我碰到了同样的问题的方式,这是我如何设法解决它(即使它是一个有点晚)

public void availableCapacity(JTable tableR){ 
double total = 0.0; 
double total1 = 0.0; 
for (int i = 0; i < tableR.getRowCount(); i++){ 
     try{ 
    double amount1 = Double.parseDouble((String) tableR.getValueAt(i, 10)); 
    total1 += amount1; 
     }catch(Exception ex){System.err.println("ex badNumberInput:"+ex);} 

     try{ 
    double amount = Double.parseDouble((String) tableR.getValueAt(i, 11)); 
    total += amount; 
     }catch(Exception ex){System.err.println("ex badNumberInput:"+ex);} 

} 

System.out.println(total +" " + total1); 

BigDecimal nr = new BigDecimal(total); 
String roundedResult = nr.setScale(2, RoundingMode.HALF_EVEN).toString(); 
sumavailbleField.setText(roundedResult); 
} 

然后我为了得到这个添加的DocumentListener到一个JTextField tableR值

public void jLabelFilter(JTable tableR){ 

TableRowSorter<TableModel> rowSorter = new TableRowSorter<>(tableR.getModel()); 
tableR.setRowSorter(rowSorter); 

//jtfFilter is the jTextField from user input  
jtfFilter.getDocument().addDocumentListener(new DocumentListener(){ 

     @Override 
     public void insertUpdate(DocumentEvent e) { 
      String text = jtfFilter.getText(); 
      if (text.trim().length() == 0) { 
       rowSorter.setRowFilter(null); 
       availableCapacity(tableR); 

      } else { 
       rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); 
       availableCapacity(tableR); 
      } 
     } 

     @Override 
     public void removeUpdate(DocumentEvent e) { 
      String text = jtfFilter.getText(); 
      if (text.trim().length() == 0) { 
       rowSorter.setRowFilter(null); 
       availableCapacity(tableR); 
      } else { 
       rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); 
       availableCapacity(tableR); 
      } 
     } 

     @Override 
     public void changedUpdate(DocumentEvent e) { 
      throw new UnsupportedOperationException("Not supported yet."); 
    } 
    });  
} 

希望它有帮助,欢呼!