2013-07-15 27 views
0

我试图从现有的Object[][][] Array填充JTable表单,但问题是我所有的数据或包含[Ljava.lang.Object;@而不是我的(整数)数据,尽管我犯了一个System.out.println("")将数据放入JTable之前打印数据,但我总是遇到同样的问题;接下来的代码是一个小屏幕和thanx的帮助。我得到[Ljava.lang.Object; @而不是我的JTable上的数据

import java.awt.Component; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 

public class gass extends JFrame { 
    String title[] ={"Box", "Weight", "Priority"}; 
    public gass() { 
     int nb=interface1.BNumber; 
     Object[][][] data = new Object[nb][nb][nb]; 
     int E1=0, E2=0; 
for (int i=0;i<nb;i++) 
      {  data[i][0][0] = i+1; 
        E1 = (int) (Math.random() * 100); 
        data[0][i][0] = E1; 
        E2 = (int) (Math.random() * 10); 
        data[0][0][i] = E2;     
      } 
    for (int j=0;j<nb;j++) 
       {  
       System.out.println("*"+data[j][0][0]+"*"+data[0][j][0]+"*"+data[0][0][j]+"*"); 
       }  
     JTable table = new JTable(data, title); 
     Component add = this.getContentPane().add(new JScrollPane(table)); 
     this.setVisible(true); 
     table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
     this.setSize(800,400); 
} 
} 

,我在对象数组的第一个案件得到错误的数据总是***data[0][0][0] = wrong information !!*** 接下来还有一个问题,我的小应用程序,非常感谢您的帮助

的输出的描述的链接Click in this link here to get Description Image

+1

您使用的是3维数组'的对象[] [] []而构造函数,而'JTable()'[构造函数](http://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html#JTable(java.lang.Object [] [ ],java.lang.Object []))可以使用'Object [] []'! – NINCOMPOOP

+0

我想你想要的东西像'对象[] []数据=新的对象[nb] [3]; ... data [i] [0] = i + 1;数据[i] [1] = E1; data [i] [2] = E2;' – user1516873

+0

那么在JTable()构造器中有没有什么方法可以使用3D数组'Object [] [] []'? @TheNewIdiot –

回答

2

JTable构造函数以Object[][]作为参数。这个数组是行数组。所以data[i]是一行,它是一列数组。

数组中的每一行本身都是一列数组。每列(data[i][j])应该包含显示在JTable的一个单元格中的一些数据。

就你而言,这个数据本身就是一个数组。由于没有与对象数组关联的特定渲染器,因此阵列的toString()方法用于在单元格中显示数组。而数组的toString()方法返回类似[Ljava.lang.Object;@

你应该告诉我们你想在每个单元格中显示什么,以获得更好的答案,解释你应该做什么。

编辑:

给你想显示什么,你只需要一个二维数组:`在

Object[][] data = new Object[nb][3]; // nb rows, 3 columns 
for (int row = 0; row < nb; row++) { 
    data[row][0] = row + 1; // first column: row number 
    data[row][1] = Math.random(100); // second column: weight 
    data[row][2] = Math.random(10): // third column: priority 
} 
+0

我想打印一个包含3列的表格:BoxNumber - 重量 - 优先 第一个是框号 第二个是权重Random 0-100 第三优先随机0-10 我只是想打印数组在这里: 'for(int i = 0; i

+0

@GhassenBellagha:请参阅我的答案中的编辑。 –

+0

它解决了,你真的很棒MR @JB NIZET非常感谢你的评论,我已经理解了对象数组如何运作thanx很多! –

相关问题