0

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

它有这些错误: ]![错误(C:\Users\user\Desktop\error.png)

4

2 回答 2

1

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

Object[] header = {"Column1", "Column2..."};
jTable1.setModel(new javax.swing.table.
    DefaultTableModel(TableAdapter.getTableC(), header)
于 2013-06-29T09:59:18.200 回答
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)
于 2013-06-29T11:09:35.033 回答