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

Java 如何在Netbeans中将2D数组传递给jtable,java,netbeans,jtable,multidimensional-array,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); 它

这是我第一次创建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()

非常感谢,我正在使用Netbeans


我得到了一个包含两种动物的animal表,从中我解释为整数代码,它存储在一个新表(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;
}


}
它有以下错误:
(C:\Users\user\Desktop\error.png)

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

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

getTableC方法是静态的,但是初始化数组的Table方法不是静态的,这会导致返回一个未初始化的数组。将表方法设为静态或从getTableC、tableC和Dimension中删除静态关键字,并将表方法设为构造函数

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;
}
package tigers.bunnies;
公共类表适配器{
公共整数表C[][];//=新整数[3][3];
私有整数维;
公共表适配器(){
动物片剂[];
table=table.getTable();
尺寸=长度;
//int tableC[][];
表C=新的整数[维度][维度];

对于(int i=0;它的方法是:public static int[]]getTableC(){return tableC;}tableC的类型是什么?static public int tableC[]];它是如何初始化的?你确定它不是这样的:tableC=new int[size][]?使用多维数组,您必须为每个Dimension提供大小。您可以发布TableAdapter类吗?为什么要这样做
new int[]][]=TableAdapter.getTableC()
默认情况下是新对象[],我将其转换为new int[]只是为了使方法的传输更加兼容,但无论如何都会出现相同的问题。你试过luke的答案吗?是的,它说没有找到合适的构造函数,但我必须保持我的tableC静态,因为我有一个错误,你不能传递非静态方法()无法从静态上下文引用tableC90,因此我仅将该方法更改为构造函数,仅将其更改为构造函数将不起作用。如果要在静态上下文中使用此类,请将Table()更改为static。
Object[] header = {"Column1", "Column2..."};
jTable1.setModel(new javax.swing.table.
    DefaultTableModel(TableAdapter.getTableC(), header)
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;
}
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)