JTable二维对象数组

时间:2018-05-08 13:48:08

标签: java jtable

愿这个问题重复,但我尝试了大部分解决方案,但没有一个适合我的问题。 参考此页面:https://docs.oracle.com/javase/tutorial/uiswing/components/table.html

我想创建JTable来从我的自定义类中读取对象。作为第一步,我想用JTable测试循环。如下:

Object[][] tripsData =new Object[3][6];
for(int j=0; j< 3;j++)
        for(int i =0; i< 6;i++)
        {   tripsData[j][i]= new Object[] {"Kathy", "Smith","wait",  "Snowboarding", 5, "false"};
        }

代码工作正常,除了它显示的输出:

 [Ljava.lang.Object;@41488024
 [Ljava.lang.Object;@54c83ae1
 [Ljava.lang.Object;@161a4f2c

我尝试使用toString()和valueOf(),但同样的事情。 任何解决的建议

2 个答案:

答案 0 :(得分:1)

问题是你正在创建一个三维数组而不是你需要的2D。在您的代码中,您使用

tripsData[j][i]= new Object[] {"Kathy", "Smith","wait",  "Snowboarding", 5, "false"};

因此"Kathy"生成的Object中有一个索引[j][i][0]"Smith"有一个索引[j][i][1],依此类推。像这样填充你的数组:

Object[][] tripsData =new Object[3][6];
        for(int j=0; j< 3;j++) {
            tripsData[j] = new Object[]{"Kathy", "Smith", "wait", "Snowboarding", 5, "false"};
        }

然后这两个

    for (Object[] row : tripsData) {
        for (int j = 0; j < data[0].length; j++) {
            System.out.print(row[j]);
            System.out.print("\t");
        }
        System.out.print("\n");
    }

和这个

for (Object[] row : tripsData) {
    System.out.println(Arrays.toString(row));
}

可以正常使用

答案 1 :(得分:0)

您可以使用Arrays.toString(),有点类似于此代码段:

    Object[][] arr = new Object[2][2];
    arr[0][0] = "00";
    arr[0][1] = "01";
    arr[1][0] = "10";
    arr[1][1] = "11";
    System.out.println(Arrays.toString(arr[0]));
    System.out.println(Arrays.toString(arr[1]));

这将打印

[00, 01]
[10, 11]