我有以下方法
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)
我在途中遇到了同样的问题,这是我设法修复它的方法(即使它有点晚了)
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.");
}
});
}
希望它有所帮助,欢呼!