2016-05-24 67 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."); 
    } 
    });  
} 

希望它有幫助,歡呼!