-1

可能重复:
有什么方法可以使用 ArrayList 中的数据创建 JTable?

我的程序代码如下:

//A loan Amortization example
public class LoanTable 
{

public static void main(String[] args) 
{
    double p,n,r,a,rb,ia,pa,pno=1;

    //creating a double arraylist
    List<double[]> l = new ArrayList<double[]>();

    p=250000;
    n=360;
    r=0.416/100;
    a=1342.05;

    rb=p;

//calculating the amount as interest, amount as principal and remaining balance 
    for(int i=1; i<=n;i++)
    {
        ia=(rb*r);
        pa=a-ia;
        rb=rb-pa;

        l.add(new double[] { pno,a,ia,pa,rb });

        pno++;

    }

    for (double[] row : l) 
    {
        System.out.println(Arrays.toString(row));

    }

}
}

如何导入行中的值来创建表?导入值变得困难。

输出有点像:

[1.0、1342.05、1040.0、302.04999999999995、249697.95]

[2.0、1342.05、1038.7434719999999、303.30652800000007、249394.64347200003]

[3.0、1342.05、1037.48171684352、304.56828315648、249090.07518884353]

[4.0、1342.05、1036.214712785589、305.835287214411、248784.23990162913]

[5.0、1342.05、1034.942437990777、307.1075620092229、248477.13233961992]

[6.0、1342.05、1033.6648705328187、308.3851294671813、248168.74721015274]

[7.0、1342.05、1032.3819883942353、309.6680116057646、247859.07919854697]

[8.0、1342.05、1031.0937694659553、310.9562305340446、247548.12296801293]

[9.0、1342.05、1029.8001915469338、312.2498084530662、247235.87315955988]

[10.0、1342.05、1028.501232343769、313.5487676562309、246922.32439190365]

谢谢。

4

2 回答 2

1

一种方法是List<double[]>使用AbstractTableModel. 网上有很多关于这个表模型的好例子

于 2012-10-14T19:27:51.407 回答
1

使用JTable时要理解的关键是每个 JTable 都在内部由TableModel支持。如果您不熟悉使用表格,我建议您将“如何使用表格”作为开始学习实施的好地方

每个表模型基本上都实现了 TableModel 接口。对于您的方案,您应该考虑创建自己的表模型,扩展AbstractTableModel类。根据javadoc,

要创建一个具体的 TableModel 作为 AbstractTableModel 的子类,您只需提供以下三种方法的实现:

公共 int getRowCount();
公共 int getColumnCount();
public Object getValueAt(int row, int column);

因此,您对 TableModel 的实现将至少是这样的 [请注意,我说的最低限度是因为您还希望覆盖此类的其他方法,例如 getColumnNames(...) ]:

import java.util.List;  
import javax.swing.table.AbstractTableModel;

public class MyTableModel extends AbstractTableModel {
    
    private List<double[]> dataList;
    
    public MyTableModel(List<double[]> dataList){
        this.dataList = dataList;
    }

    @Override
    public int getRowCount() {
        return dataList.size();
    }

    @Override
    public int getColumnCount() {
        return (dataList.size() > 0) ? dataList.get(0).length : 0;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        
        if(rowIndex < dataList.size()){
            double[] columns = dataList.get(rowIndex);
            if(columns.length > columnIndex){
                return columns[columnIndex];
            }
        }
        return null;
    }
}
于 2012-10-14T23:20:52.187 回答