Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算JTable中从特定索引开始的列的总数_Java_Swing - Fatal编程技术网

Java 如何计算JTable中从特定索引开始的列的总数

Java 如何计算JTable中从特定索引开始的列的总数,java,swing,Java,Swing,我在JTable中有金额列和一个“总计”和“最终总计”按钮。所以,如果我把2和3放在amount列中,然后点击'Total',那么我在同一列的另一个单元格中得到了5。(我的程序在这一步之前运行良好)现在我想在5下面插入3和4。我插入并点击“最终总计”,然后只想在最后一行的同一列(金额)中显示12(5+3+4)。(5是我得到的总答案)。 在这里,我粘贴了“总计”和“最终总计”按钮的代码。我不确定是否在“最终总计”按钮中使用for循环。所以请给出解决方案 JButton total = ne

我在JTable中有金额列和一个“总计”和“最终总计”按钮。所以,如果我把2和3放在amount列中,然后点击'Total',那么我在同一列的另一个单元格中得到了5。(我的程序在这一步之前运行良好)现在我想在5下面插入3和4。我插入并点击“最终总计”,然后只想在最后一行的同一列(金额)中显示12(5+3+4)。(5是我得到的总答案)。
在这里,我粘贴了“总计”和“最终总计”按钮的代码。我不确定是否在“最终总计”按钮中使用for循环。所以请给出解决方案

    JButton total = new JButton("Total");
    total.addActionListener(new ActionListener() 
            {
                public void actionPerformed(ActionEvent ae) 
                {
                    flag=1;
                    add.setEnabled(false);
                    Object source = ae.getSource();
                    if (source == total) 
                    { 
    model.addRow(new Object[]{new Integer(0),"TOTAL",new Integer(1), new Double(0.0),"",new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)});
                        for( i = 0; i < model.getRowCount(); i++)
                        {
                             amount = Double.parseDouble(model.getValueAt(i, 6).toString());
                             sum = new Double(sum+amount);
                         }
                        model.setValueAt(sum,model.getRowCount()-1,6);
                         }
                    JOptionPane.showMessageDialog(null,"If you pressed Total then you can't select 'Add Row' button ");
                    model.addRow(new Object[]{new Integer(0),"",new Integer(0), new Double(0.0),"",new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)});
                    model.addRow(new Object[]{new Integer(0),"",new Integer(0), new Double(0.0),"",new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)});
                    model.addRow(new Object[]{new Integer(0),"",new Integer(0), new Double(0.0),"",new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)});
                    model.addRow(new Object[]{new Integer(0),"",new Integer(0), new Double(0.0),"",new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)});

                }
                });


    JButton btnFinalTotal = new JButton("Final total");
    btnFinalTotal.addActionListener(new ActionListener() 
            {
                public void actionPerformed(ActionEvent ae)
                {
                    flag=2;
                    Object source = ae.getSource();
                    if (source == btnFinalTotal) 
                    {
                    d= Double.parseDouble(model.getValueAt(i,6).toString());
                    System.out.println("Current value of d is  "  +d);

                    model.addRow(new Object[]{new Integer(0),"FINAL TOTAL",new Integer(1), new Double(0.0),"",new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)});
                        for(i=0;i>d;i++)
                        {
                            amount = Double.parseDouble(model.getValueAt(i, 6).toString());
                            finalamount= new Double(d+amount);
                        }  
                        model.setValueAt(finalamount,model.getRowCount()-1,6);
                    }
                }
            });

public void tableChanged(TableModelEvent e)
            {

                if (e.getType() == TableModelEvent.UPDATE)
                {
                    System.out.println("Cell " + e.getFirstRow() + ", "
                            + e.getColumn() + " changed. The new value: "
                            + table.getModel().getValueAt(e.getFirstRow(),
                                    e.getColumn()));
                    int row = e.getFirstRow();
                    int column = e.getColumn();
if(flag==1)
                    {
                         if(column == 6)
                         {
                        //   taxonamt= Double.parseDouble(model.getValueAt(row, 6).toString());
                             sum=Double.parseDouble(model.getValueAt(row, 6).toString());
                        //  Double total = new Double (sum*(taxonamt/100));
                             Double total = new Double (sum);
                             model.setValueAt(total,model.getRowCount()-1,7);
                         }
                    }
}
}
JButton total=新的JButton(“total”);
total.addActionListener(新ActionListener()
{
已执行的公共无效行动(行动事件ae)
{
flag=1;
add.setEnabled(false);
Object source=ae.getSource();
如果(来源==总数)
{ 
addRow(新对象[]{new Integer(0),“TOTAL”,new Integer(1),new Double(0.0),“”,new Double(0.0),new Double(0.0),new Double(0.0),new Double(0.0)});
对于(i=0;id;i++)
{
amount=Double.parseDouble(model.getValueAt(i,6.toString());
最终金额=新的双倍(d+金额);
}  
model.setValueAt(finalamount,model.getRowCount()-1,6);
}
}
});
公共作废表已更改(TableModelEvent e)
{
if(e.getType()==TableModelEvent.UPDATE)
{
System.out.println(“单元格”+e.getFirstRow()+”
+e.getColumn()+“已更改。新值:”
+table.getModel().getValueAt(例如getFirstRow(),
e、 getColumn());
int row=e.getFirstRow();
int column=e.getColumn();
如果(标志==1)
{
如果(列==6)
{
//taxonamt=Double.parseDouble(model.getValueAt(第6行).toString());
sum=Double.parseDouble(model.getValueAt(第6行).toString());
//双倍总额=新的双倍(总和*(taxonamt/100));
双倍总额=新的双倍(总和);
model.setValueAt(总计,model.getRowCount()-1,7);
}
}
}
}

您需要在数据中放置某种“标记”,将一行指定为“总计”行,以便找到最后一个“总计”行并计算其下方的行


就个人而言,我将从一个普通的旧java对象(POJO)开始,它封装了您想要的功能,并围绕它构建了表模型

您需要在数据中放置某种“标记”,将一行指定为“总计”行,这样您就可以找到最后一个“总计”行并计算其下的行


就我个人而言,我会从一个普通的旧java对象(POJO)开始,它封装了您想要的功能,并围绕它构建了表模型

n不,这是您必须尝试的,您有关于问题的所有信息,我最终制定的任何解决方案或代码都无法满足您的所有需求。我过去做过,为此浪费了好几天的时间——而且,这不是一个代码工厂。我的建议是,尝试一些东西,你需要使用AbstractTableModel来支持你的定制对象。这是你必须尝试的东西,你有关于这个问题的所有信息,我所做的任何解决方案或代码最终都不能满足你的所有需求。我过去做过,为此浪费了好几天的时间——而且,这不是一个代码工厂。我的建议是,尝试一下,您需要使用AbstractTableModel来支持定制对象