JTable错误的列求和值

时间:2015-07-10 19:06:29

标签: java swing jtable documentlistener

场景
JTable包含以下数据,我试图在下图中描述我想要做的事情: - enter image description here

所以,我想我能解释一下我想在这里实现的目标。

遇到问题 当前没有显示准​​确的结果(总和)。我使用的代码是:

public void docTotal_Income(){
   try{

       int totC=8,xC=3,lC=4,eC=5, sC=6; // totC is the last column, xC-3rd, lC-4th and so on...


       for(int i=0;i<(easypath.doctorBusiness_table.getRowCount());i++){ // "easypath.doctorBusiness_table" is the table name
           sumTot += Double.parseDouble(easypath.doctorBusiness_table.getModel().getValueAt(i, totC).toString());
           sumTotx += Double.parseDouble(easypath.doctorBusiness_table.getModel().getValueAt(i, xC).toString());
           sumTotl += Double.parseDouble(easypath.doctorBusiness_table.getModel().getValueAt(i, lC).toString());
           sumTote += Double.parseDouble(easypath.doctorBusiness_table.getModel().getValueAt(i, eC).toString());
           sumTots += Double.parseDouble(easypath.doctorBusiness_table.getModel().getValueAt(i, sC).toString());
       }
       easypath.totalEarnt_docBus_tf.setText(String.valueOf(sumTot));
       easypath.xTotIncome_tf.setText(String.valueOf(sumTotx));
       easypath.lTotIncome_tf.setText(String.valueOf(sumTotl));
       easypath.eTotIncome_tf.setText(String.valueOf(sumTote));
       easypath.sTotIncome_tf.setText(String.valueOf(sumTots));

       sumTot = 0;   // public static    
       sumTotx = 0;  // values globally
       sumTotl = 0;  // declared
       sumTote = 0;  // and
       sumTots = 0;  // initialised 0 

       }
       catch(Exception ex){
           ex.printStackTrace();
           JOptionPane.showMessageDialog(null, "Error in totalling income");
       }
   }

在使用 docTotal_Income() 优化JTable之后,我正在调用方法 Document Listener 工作正常)并最终在eventListener上发布JButton

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    new doctor().docTotal_Income(); // doctor is the class
}

在完成所有这些后,我得到了不规则的总结。我猜我在逻辑错误的地方出了问题,但还有其他我想念的东西吗?

我很乐意对此提出任何建议。谢谢你的时间

1 个答案:

答案 0 :(得分:1)

new doctor().docTotal_Income(); // doctor is the class

首先,类名应以大写字母开头。 &#34;医生()&#34;应该是&#34;医生()&#34;。

你为什么要创建一个新的Doctor()?

如果您尝试过滤TableModel中的数据,则需要从表中获取数据,而不是TableModel。

所以你的代码应该是这样的:

JTable table = easypath.doctorBusiness_table;

for(int i=0; I < table.getRowCount(); i++)
{
       sumTot += Double.parseDouble(table.getValueAt(i, totC).toString());
       sumTotx += Double.parseDouble(table.getValueAt(i, xC).toString());
       sumTotl += Double.parseDouble(table.getValueAt(i, lC).toString());
       sumTote += Double.parseDouble(table.getValueAt(i, eC).toString());
       sumTots += Double.parseDouble(table.getValueAt(i, sC).toString());
}