如何在Netbeans中将2D数组传递给jtable

时间:2013-06-29 09:54:12

标签: java netbeans jtable multidimensional-array

这是我第一次创建jtable,我想从另一个类中显示一个int的jtable。所以我调用方法getTable并将其分配给jtable,是不是?

jTable1 = new javax.swing.JTable();

jTable1.setModel(new javax.swing.table.DefaultTableModel(
   new int[][] = TableAdapter.getTableC()

));

jScrollPane1.setViewportView(jTable1);

它一直在说arraydimension缺失,然后我调用方法getDimension()并以各种方式插入它

new int[getDimension()][] = TableAdapter.getTableC()

new int[getDimension()][new int[getDimension()][] = TableAdapter.getTableC()

非常感谢,我正在使用Netbeans。


我得到了一个动物表,它有两种类型的动物,从中我解释为整数代码,存储在一个新表(tableC)中只是为了让它更容易

package tigers.bunnies;


public class TableAdapter {

static public int tableC[][];//=new int[3][3];
static private int dimension;

public void Table(){
    Animal tableT[][];
    tableT = table.getTable();

    dimension=tableT.length;

    //int tableC[][];
    tableC = new int[dimension][dimension];

    for(int i=0;i<dimension;i++){
        for(int j=0;j<dimension;j++){
            if(tableT[i][j]==null){
                tableC[i][j]=0000;
            }
            else if(tableT[i][j] instanceof tiger){
                tableC[i][j]=0001;
            }
            else if(tableT[i][j] instanceof tiger){
                tableC[i][j]=0002;
            }

    }
}
}

public static int[][] getTableC() {
    return tableC;
}

public static int getDimension() {
    return dimension;
}


}

当我使用

jTable1.setModel(new javax.swing.table.DefaultTableModel(
        TableAdapter.getTableC()
    ));

它有这些错误: ]![Error(C:\用户\用户\桌面\ error.png)

2 个答案:

答案 0 :(得分:1)

可能你的TableAdapter.getTable()方法返回一个单维数组。你也没有提供表头,但我不认为这是异常的直接原因。你应该这样调用setModel:

Object[] header = {"Column1", "Column2..."};
jTable1.setModel(new javax.swing.table.
    DefaultTableModel(TableAdapter.getTableC(), header)

答案 1 :(得分:1)

你的getTableC方法是静态的,但初始化数组的Table方法不是,导致返回未初始化的数组。使Table方法静态或从getTableC,tableC和dimmension中删除static关键字,并使Table方法成为构造函数。

package tigers.bunnies;


public class TableAdapter {

public int tableC[][];//=new int[3][3];
private int dimension;

public TableAdapter(){
    Animal tableT[][];
    tableT = table.getTable();

    dimension=tableT.length;

    //int tableC[][];
    tableC = new int[dimension][dimension];

    for(int i=0;i<dimension;i++){
        for(int j=0;j<dimension;j++){
            if(tableT[i][j]==null){
                tableC[i][j]=0000;
            }
            else if(tableT[i][j] instanceof tiger){
                tableC[i][j]=0001;
            }
            else if(tableT[i][j] instanceof tiger){
                tableC[i][j]=0002;
            }

    }
}
}

public int[][] getTableC() {
    return tableC;
}

public int getDimension() {
    return dimension;
}

此外,int数组不是Object数组。在传递给JTable模型之前将其更改为Integer:

TableAdapter ta = new TableAdapter();
int[][] temp = ta.getTableC();
Integer[][] Result = new Integer[temp.length][temp[0].length];
for(int i = 0; i < temp.length; i++){
   for(int j = 0; j < temp[0].length; j++)
      result[i][j] = new Integer(temp[i][j]);
}
Object[] header = {"Column1", "Column2"};
jTable1.setModel(new javax.swing.table.
DefaultTableModel(result, header)